1 |
- {"version":3,"file":"pdf.worker.js","mappings":"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,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,IAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,GAAF,IAAS,KAAT;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,GAAV;EACAA,EAAE,IAAF,IAAU,KAAV;EACAA,EAAE,IAAF,IAAU,IAAV;EACAA,EAAE,IAAF,IAAU,IAAV;AA/aqE,CAAnC,CAApC;AA1TA;AA+uBA,MAAMu8F,uCAAuCj2F,uCAAsB,UACjEtG,CADiE,EAEjE;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;AAHA,CAF2C,CAA7C;AA/uBA;AA0vBA,MAAMw8F,oCAAoCl2F,uCAAsB,UAAUtG,CAAV,EAAa;EAC3EA,EAAE,CAAF,IAAO,EAAP;EACAA,EAAE,CAAF,IAAO,EAAP;EACAA,EAAE,CAAF,IAAO,GAAP;EACAA,EAAE,CAAF,IAAO,GAAP;EACAA,EAAE,CAAF,IAAO,GAAP;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,EAAF,IAAQ,EAAR;EACAA,EAAE,EAAF,IAAQ,GAAR;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,EAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,GAAF,IAAS,GAAT;EACAA,EAAE,G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","sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/core_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/base_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/default_appearance.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_85_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decode_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ascii_hex_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/flate_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/lzw_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/predictor_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/run_length_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/to_unicode_map.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyf.js","webpack://pdfjs-dist/build/pdf.worker/src/core/opentype_file_builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_font.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/calibri_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/helvetica_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/liberationsans_widths.js","webpack://pdfjs-dist/build/pdf.worker/src/core/myriadpro_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/segoeui_factors.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/writer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xml_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/decrypt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/catalog.js","webpack://pdfjs-dist/build/pdf.worker/src/core/name_number_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cleanup_helper.js","webpack://pdfjs-dist/build/pdf.worker/src/core/file_spec.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metadata_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/struct_tree.js","webpack://pdfjs-dist/build/pdf.worker/src/core/object_loader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/factory.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xfa_object.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/namespaces.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/som.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/bind.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/template.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/layout.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/html_utils.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/text.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/data.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/builder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/setup.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/config.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/connection_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/datasets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/locale_set.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/signature.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/stylesheet.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xdp.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/xhtml.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xfa/unknown.js","webpack://pdfjs-dist/build/pdf.worker/src/core/dataset_reader.js","webpack://pdfjs-dist/build/pdf.worker/src/core/xref.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker_stream.js","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/define property getters","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/hasOwnProperty shorthand","webpack://pdfjs-dist/build/pdf.worker/webpack/runtime/make namespace object","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(globalThis, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n MissingPDFException,\n PasswordException,\n setVerbosityLevel,\n stringToPDFString,\n UnexpectedResponseException,\n UnknownErrorException,\n VerbosityLevel,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Ref } from \"./primitives.js\";\nimport { getNewAnnotationsMap, XRefParseException } from \"./core_utils.js\";\nimport { LocalPdfManager, NetworkPdfManager } from \"./pdf_manager.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { incrementalUpdate } from \"./writer.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { PDFWorkerStream } from \"./worker_stream.js\";\n\nclass WorkerTask {\n constructor(name) {\n this.name = name;\n this.terminated = false;\n this._capability = createPromiseCapability();\n }\n\n get finished() {\n return this._capability.promise;\n }\n\n finish() {\n this._capability.resolve();\n }\n\n terminate() {\n this.terminated = true;\n }\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error(\"Worker task was terminated\");\n }\n }\n}\n\nclass WorkerMessageHandler {\n static setup(handler, port) {\n let testMessageProcessed = false;\n handler.on(\"test\", function (data) {\n if (testMessageProcessed) {\n return; // we already processed 'test' message once\n }\n testMessageProcessed = true;\n\n // Ensure that `TypedArray`s can be sent to the worker.\n handler.send(\"test\", data instanceof Uint8Array);\n });\n\n handler.on(\"configure\", function (data) {\n setVerbosityLevel(data.verbosity);\n });\n\n handler.on(\"GetDocRequest\", function (data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n }\n\n static createDocumentHandler(docParams, port) {\n // This context is actually holds references on pdfManager and handler,\n // until the latter is destroyed.\n let pdfManager;\n let terminated = false;\n let cancelXHRs = null;\n const WorkerTasks = [];\n const verbosity = getVerbosityLevel();\n\n const { docId, apiVersion } = docParams;\n const workerVersion =\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null;\n if (apiVersion !== workerVersion) {\n throw new Error(\n `The API version \"${apiVersion}\" does not match ` +\n `the Worker version \"${workerVersion}\".`\n );\n }\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Fail early, and predictably, rather than having (some) fonts fail to\n // load/render with slightly cryptic error messages in environments where\n // the `Array.prototype` has been *incorrectly* extended.\n //\n // PLEASE NOTE: We do *not* want to slow down font parsing by adding\n // `hasOwnProperty` checks all over the code-base.\n const enumerableProperties = [];\n for (const property in []) {\n enumerableProperties.push(property);\n }\n if (enumerableProperties.length) {\n throw new Error(\n \"The `Array.prototype` contains unexpected enumerable properties: \" +\n enumerableProperties.join(\", \") +\n \"; thus breaking e.g. `for...in` iteration of `Array`s.\"\n );\n }\n\n // Ensure that (primarily) Node.js users won't accidentally attempt to use\n // a non-translated/non-polyfilled build of the library, since that would\n // quickly fail anyway because of missing functionality.\n if (typeof ReadableStream === \"undefined\") {\n const partialMsg =\n \"The browser/environment lacks native support for critical \" +\n \"functionality used by the PDF.js library (e.g. `ReadableStream`); \";\n\n if (isNodeJS) {\n throw new Error(partialMsg + \"please use a `legacy`-build instead.\");\n }\n throw new Error(partialMsg + \"please update to a supported browser.\");\n }\n }\n const workerHandlerName = docId + \"_worker\";\n let handler = new MessageHandler(workerHandlerName, docId, port);\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error(\"Worker was terminated\");\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n const i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n async function loadDocument(recoveryMode) {\n await pdfManager.ensureDoc(\"checkHeader\");\n await pdfManager.ensureDoc(\"parseStartXRef\");\n await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n\n // Check that at least the first page can be successfully loaded,\n // since otherwise the XRef table is definitely not valid.\n await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n // Check that the last page can be successfully loaded, to ensure that\n // `numPages` is correct, and fallback to walking the entire /Pages-tree.\n await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n\n const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n if (isPureXfa) {\n const task = new WorkerTask(\"loadXfaFonts\");\n startWorkerTask(task);\n await Promise.all([\n pdfManager\n .loadXfaFonts(handler, task)\n .catch(reason => {\n // Ignore errors, to allow the document to load.\n })\n .then(() => finishWorkerTask(task)),\n pdfManager.loadXfaImages(),\n ]);\n }\n\n const [numPages, fingerprints] = await Promise.all([\n pdfManager.ensureDoc(\"numPages\"),\n pdfManager.ensureDoc(\"fingerprints\"),\n ]);\n\n // Get htmlForXfa after numPages to avoid to create HTML twice.\n const htmlForXfa = isPureXfa\n ? await pdfManager.ensureDoc(\"htmlForXfa\")\n : null;\n\n return { numPages, fingerprints, htmlForXfa };\n }\n\n function getPdfManager({\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions,\n }) {\n const pdfManagerCapability = createPromiseCapability();\n let newPdfManager;\n\n if (data) {\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n data,\n password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n let pdfStream,\n cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n const fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady\n .then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n // We don't need auto-fetch when streaming is enabled.\n disableAutoFetch =\n disableAutoFetch || fullRequest.isStreamingSupported;\n\n newPdfManager = new NetworkPdfManager(\n docId,\n pdfStream,\n {\n msgHandler: handler,\n password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize,\n },\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n // There may be a chance that `newPdfManager` is not initialized for\n // the first few runs of `readchunk` block of code. Be sure to send\n // all cached chunks, if any, to chunked_stream via pdf_manager.\n for (const chunk of cachedChunks) {\n newPdfManager.sendProgressiveData(chunk);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(newPdfManager);\n cancelXHRs = null;\n })\n .catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n\n let loaded = 0;\n const flushChunks = function () {\n const pdfFile = arraysToBytes(cachedChunks);\n if (length && pdfFile.length !== length) {\n warn(\"reported HTTP length is different from actual\");\n }\n // the data is array, instantiating directly from it\n try {\n newPdfManager = new LocalPdfManager(\n docId,\n pdfFile,\n password,\n handler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n );\n pdfManagerCapability.resolve(newPdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n new Promise(function (resolve, reject) {\n const readChunk = function ({ value, done }) {\n try {\n ensureNotTerminated();\n if (done) {\n if (!newPdfManager) {\n flushChunks();\n }\n cancelXHRs = null;\n return;\n }\n\n loaded += arrayByteLength(value);\n if (!fullRequest.isStreamingSupported) {\n handler.send(\"DocProgress\", {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0),\n });\n }\n\n if (newPdfManager) {\n newPdfManager.sendProgressiveData(value);\n } else {\n cachedChunks.push(value);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n }).catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function (reason) {\n pdfStream.cancelAllRequests(reason);\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send(\"GetDoc\", { pdfInfo: doc });\n }\n\n function onFailure(ex) {\n ensureNotTerminated();\n\n if (ex instanceof PasswordException) {\n const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n startWorkerTask(task);\n\n handler\n .sendWithPromise(\"PasswordRequest\", ex)\n .then(function ({ password }) {\n finishWorkerTask(task);\n pdfManager.updatePassword(password);\n pdfManagerReady();\n })\n .catch(function () {\n finishWorkerTask(task);\n handler.send(\"DocException\", ex);\n });\n } else if (\n ex instanceof InvalidPDFException ||\n ex instanceof MissingPDFException ||\n ex instanceof UnexpectedResponseException ||\n ex instanceof UnknownErrorException\n ) {\n handler.send(\"DocException\", ex);\n } else {\n handler.send(\n \"DocException\",\n new UnknownErrorException(ex.message, ex.toString())\n );\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n\n loadDocument(false).then(onSuccess, function (reason) {\n ensureNotTerminated();\n\n // Try again with recoveryMode == true\n if (!(reason instanceof XRefParseException)) {\n onFailure(reason);\n return;\n }\n pdfManager.requestLoadedStream().then(function () {\n ensureNotTerminated();\n\n loadDocument(true).then(onSuccess, onFailure);\n });\n });\n }\n\n ensureNotTerminated();\n\n getPdfManager(data)\n .then(function (newPdfManager) {\n if (terminated) {\n // We were in a process of setting up the manager, but it got\n // terminated in the middle.\n newPdfManager.terminate(\n new AbortException(\"Worker was terminated.\")\n );\n throw new Error(\"Worker was terminated\");\n }\n pdfManager = newPdfManager;\n\n pdfManager.requestLoadedStream(/* noFetch = */ true).then(stream => {\n handler.send(\"DataLoaded\", { length: stream.bytes.byteLength });\n });\n })\n .then(pdfManagerReady, onFailure);\n }\n\n handler.on(\"GetPage\", function (data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return Promise.all([\n pdfManager.ensure(page, \"rotate\"),\n pdfManager.ensure(page, \"ref\"),\n pdfManager.ensure(page, \"userUnit\"),\n pdfManager.ensure(page, \"view\"),\n ]).then(function ([rotate, ref, userUnit, view]) {\n return {\n rotate,\n ref,\n userUnit,\n view,\n };\n });\n });\n });\n\n handler.on(\"GetPageIndex\", function (data) {\n const pageRef = Ref.get(data.num, data.gen);\n return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n });\n\n handler.on(\"GetDestinations\", function (data) {\n return pdfManager.ensureCatalog(\"destinations\");\n });\n\n handler.on(\"GetDestination\", function (data) {\n return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n });\n\n handler.on(\"GetPageLabels\", function (data) {\n return pdfManager.ensureCatalog(\"pageLabels\");\n });\n\n handler.on(\"GetPageLayout\", function (data) {\n return pdfManager.ensureCatalog(\"pageLayout\");\n });\n\n handler.on(\"GetPageMode\", function (data) {\n return pdfManager.ensureCatalog(\"pageMode\");\n });\n\n handler.on(\"GetViewerPreferences\", function (data) {\n return pdfManager.ensureCatalog(\"viewerPreferences\");\n });\n\n handler.on(\"GetOpenAction\", function (data) {\n return pdfManager.ensureCatalog(\"openAction\");\n });\n\n handler.on(\"GetAttachments\", function (data) {\n return pdfManager.ensureCatalog(\"attachments\");\n });\n\n handler.on(\"GetJavaScript\", function (data) {\n return pdfManager.ensureCatalog(\"javaScript\");\n });\n\n handler.on(\"GetDocJSActions\", function (data) {\n return pdfManager.ensureCatalog(\"jsActions\");\n });\n\n handler.on(\"GetPageJSActions\", function ({ pageIndex }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"jsActions\");\n });\n });\n\n handler.on(\"GetOutline\", function (data) {\n return pdfManager.ensureCatalog(\"documentOutline\");\n });\n\n handler.on(\"GetOptionalContentConfig\", function (data) {\n return pdfManager.ensureCatalog(\"optionalContentConfig\");\n });\n\n handler.on(\"GetPermissions\", function (data) {\n return pdfManager.ensureCatalog(\"permissions\");\n });\n\n handler.on(\"GetMetadata\", function (data) {\n return Promise.all([\n pdfManager.ensureDoc(\"documentInfo\"),\n pdfManager.ensureCatalog(\"metadata\"),\n ]);\n });\n\n handler.on(\"GetMarkInfo\", function (data) {\n return pdfManager.ensureCatalog(\"markInfo\");\n });\n\n handler.on(\"GetData\", function (data) {\n return pdfManager.requestLoadedStream().then(function (stream) {\n return stream.bytes;\n });\n });\n\n handler.on(\"GetAnnotations\", function ({ pageIndex, intent }) {\n return pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`);\n startWorkerTask(task);\n\n return page.getAnnotationsData(handler, task, intent).then(\n data => {\n finishWorkerTask(task);\n return data;\n },\n reason => {\n finishWorkerTask(task);\n }\n );\n });\n });\n\n handler.on(\"GetFieldObjects\", function (data) {\n return pdfManager.ensureDoc(\"fieldObjects\");\n });\n\n handler.on(\"HasJSActions\", function (data) {\n return pdfManager.ensureDoc(\"hasJSActions\");\n });\n\n handler.on(\"GetCalculationOrderIds\", function (data) {\n return pdfManager.ensureDoc(\"calculationOrderIds\");\n });\n\n handler.on(\n \"SaveDocument\",\n function ({ isPureXfa, numPages, annotationStorage, filename }) {\n const promises = [\n pdfManager.requestLoadedStream(),\n pdfManager.ensureCatalog(\"acroForm\"),\n pdfManager.ensureCatalog(\"acroFormRef\"),\n pdfManager.ensureDoc(\"xref\"),\n pdfManager.ensureDoc(\"startXRef\"),\n ];\n\n const newAnnotationsByPage = !isPureXfa\n ? getNewAnnotationsMap(annotationStorage)\n : null;\n\n if (newAnnotationsByPage) {\n for (const [pageIndex, annotations] of newAnnotationsByPage) {\n promises.push(\n pdfManager.getPage(pageIndex).then(page => {\n const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\n return page\n .saveNewAnnotations(handler, task, annotations)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n if (isPureXfa) {\n promises.push(pdfManager.serializeXfaData(annotationStorage));\n } else {\n for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n promises.push(\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`Save: page ${pageIndex}`);\n return page\n .save(handler, task, annotationStorage)\n .finally(function () {\n finishWorkerTask(task);\n });\n })\n );\n }\n }\n\n return Promise.all(promises).then(function ([\n stream,\n acroForm,\n acroFormRef,\n xref,\n startXRef,\n ...refs\n ]) {\n let newRefs = [];\n let xfaData = null;\n if (isPureXfa) {\n xfaData = refs[0];\n if (!xfaData) {\n return stream.bytes;\n }\n } else {\n newRefs = refs.flat(2);\n\n if (newRefs.length === 0) {\n // No new refs so just return the initial bytes\n return stream.bytes;\n }\n }\n\n const needAppearances =\n acroFormRef &&\n acroForm instanceof Dict &&\n newRefs.some(ref => ref.needAppearances);\n\n const xfa = (acroForm instanceof Dict && acroForm.get(\"XFA\")) || null;\n let xfaDatasetsRef = null;\n let hasXfaDatasetsEntry = false;\n if (Array.isArray(xfa)) {\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n if (xfa[i] === \"datasets\") {\n xfaDatasetsRef = xfa[i + 1];\n hasXfaDatasetsEntry = true;\n }\n }\n if (xfaDatasetsRef === null) {\n xfaDatasetsRef = xref.getNewTemporaryRef();\n }\n } else if (xfa) {\n // TODO: Support XFA streams.\n warn(\"Unsupported XFA type.\");\n }\n\n let newXrefInfo = Object.create(null);\n if (xref.trailer) {\n // Get string info from Info in order to compute fileId.\n const infoObj = Object.create(null);\n const xrefInfo = xref.trailer.get(\"Info\") || null;\n if (xrefInfo instanceof Dict) {\n xrefInfo.forEach((key, value) => {\n if (typeof value === \"string\") {\n infoObj[key] = stringToPDFString(value);\n }\n });\n }\n\n newXrefInfo = {\n rootRef: xref.trailer.getRaw(\"Root\") || null,\n encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n newRef: xref.getNewTemporaryRef(),\n infoRef: xref.trailer.getRaw(\"Info\") || null,\n info: infoObj,\n fileIds: xref.trailer.get(\"ID\") || null,\n startXRef,\n filename,\n };\n }\n\n try {\n return incrementalUpdate({\n originalData: stream.bytes,\n xrefInfo: newXrefInfo,\n newRefs,\n xref,\n hasXfa: !!xfa,\n xfaDatasetsRef,\n hasXfaDatasetsEntry,\n needAppearances,\n acroFormRef,\n acroForm,\n xfaData,\n });\n } finally {\n xref.resetNewTemporaryRef();\n }\n });\n }\n );\n\n handler.on(\"GetOperatorList\", function (data, sink) {\n const pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n // Pre compile the pdf page and fetch the fonts/images.\n page\n .getOperatorList({\n handler,\n sink,\n task,\n intent: data.intent,\n cacheKey: data.cacheKey,\n annotationStorage: data.annotationStorage,\n })\n .then(\n function (operatorListInfo) {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getOperatorList: time=` +\n `${Date.now() - start}ms, len=${operatorListInfo.length}`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetTextContent\", function (data, sink) {\n const pageIndex = data.pageIndex;\n\n pdfManager.getPage(pageIndex).then(function (page) {\n const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n startWorkerTask(task);\n\n // NOTE: Keep this condition in sync with the `info` helper function.\n const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\n\n page\n .extractTextContent({\n handler,\n task,\n sink,\n includeMarkedContent: data.includeMarkedContent,\n combineTextItems: data.combineTextItems,\n })\n .then(\n function () {\n finishWorkerTask(task);\n\n if (start) {\n info(\n `page=${pageIndex + 1} - getTextContent: time=` +\n `${Date.now() - start}ms`\n );\n }\n sink.close();\n },\n function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n\n // TODO: Should `reason` be re-thrown here (currently that casues\n // \"Uncaught exception: ...\" messages in the console)?\n }\n );\n });\n });\n\n handler.on(\"GetStructTree\", function (data) {\n return pdfManager.getPage(data.pageIndex).then(function (page) {\n return pdfManager.ensure(page, \"getStructTree\");\n });\n });\n\n handler.on(\"FontFallback\", function (data) {\n return pdfManager.fontFallback(data.id, handler);\n });\n\n handler.on(\"Cleanup\", function (data) {\n return pdfManager.cleanup(/* manuallyTriggered = */ true);\n });\n\n handler.on(\"Terminate\", function (data) {\n terminated = true;\n\n const waitOn = [];\n if (pdfManager) {\n pdfManager.terminate(new AbortException(\"Worker was terminated.\"));\n\n const cleanupPromise = pdfManager.cleanup();\n waitOn.push(cleanupPromise);\n\n pdfManager = null;\n } else {\n clearGlobalCaches();\n }\n if (cancelXHRs) {\n cancelXHRs(new AbortException(\"Worker was terminated.\"));\n }\n\n for (const task of WorkerTasks) {\n waitOn.push(task.finished);\n task.terminate();\n }\n\n return Promise.all(waitOn).then(function () {\n // Notice that even if we destroying handler, resolved response promise\n // must be sent back.\n handler.destroy();\n handler = null;\n });\n });\n\n handler.on(\"Ready\", function (data) {\n setupDoc(docParams);\n docParams = null; // we don't need docParams anymore -- saving memory.\n });\n return workerHandlerName;\n }\n\n static initializeFromPort(port) {\n const handler = new MessageHandler(\"worker\", \"main\", port);\n WorkerMessageHandler.setup(handler, port);\n handler.send(\"ready\", null);\n }\n}\n\nfunction isMessagePort(maybePort) {\n return (\n typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort\n );\n}\n\n// Worker thread (and not Node.js)?\nif (\n typeof window === \"undefined\" &&\n !isNodeJS &&\n typeof self !== \"undefined\" &&\n isMessagePort(self)\n) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport { WorkerMessageHandler, WorkerTask };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n typeof PDFJSDev !== \"undefined\" &&\n !PDFJSDev.test(\"SKIP_BABEL\") &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n require(\"./compatibility.js\");\n}\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")\n ? {\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n }\n : null;\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get platform() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof navigator === \"undefined\"\n ) {\n return shadow(this, \"platform\", { isWin: false, isMac: false });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\"),\n });\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nconst Name = (function NameClosure() {\n let nameCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Name {\n constructor(name) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof name !== \"string\"\n ) {\n unreachable('Name: The \"name\" must be a string.');\n }\n this.name = name;\n }\n\n static get(name) {\n // eslint-disable-next-line no-restricted-syntax\n return nameCache[name] || (nameCache[name] = new Name(name));\n }\n\n static _clearCache() {\n nameCache = Object.create(null);\n }\n }\n\n return Name;\n})();\n\nconst Cmd = (function CmdClosure() {\n let cmdCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Cmd {\n constructor(cmd) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n typeof cmd !== \"string\"\n ) {\n unreachable('Cmd: The \"cmd\" must be a string.');\n }\n this.cmd = cmd;\n }\n\n static get(cmd) {\n // eslint-disable-next-line no-restricted-syntax\n return cmdCache[cmd] || (cmdCache[cmd] = new Cmd(cmd));\n }\n\n static _clearCache() {\n cmdCache = Object.create(null);\n }\n }\n\n return Cmd;\n})();\n\nconst nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // Creating closure on some variable.\n};\n\nclass Dict {\n constructor(xref = null) {\n // Map should only be used internally, use functions below to access.\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n }\n\n assignXref(newXref) {\n this.xref = newXref;\n }\n\n get size() {\n return Object.keys(this._map).length;\n }\n\n // Automatically dereferences Ref objects.\n get(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.get: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n async getAsync(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getAsync: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n return this.xref.fetchAsync(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray(key1, key2, key3) {\n let value = this._map[key1];\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key2];\n if (value === undefined && key3 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n key3.length < key2.length\n ) {\n unreachable(\"Dict.getArray: Expected keys to be ordered by length.\");\n }\n value = this._map[key3];\n }\n }\n if (value instanceof Ref && this.xref) {\n value = this.xref.fetch(value, this.suppressEncryption);\n }\n\n if (Array.isArray(value)) {\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this._map[key];\n }\n\n getKeys() {\n return Object.keys(this._map);\n }\n\n // No dereferencing.\n getRawValues() {\n return Object.values(this._map);\n }\n\n set(key, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n if (typeof key !== \"string\") {\n unreachable('Dict.set: The \"key\" must be a string.');\n } else if (value === undefined) {\n unreachable('Dict.set: The \"value\" cannot be undefined.');\n }\n }\n this._map[key] = value;\n }\n\n has(key) {\n return this._map[key] !== undefined;\n }\n\n forEach(callback) {\n for (const key in this._map) {\n callback(key, this.get(key));\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of Object.entries(dict._map)) {\n let property = properties.get(key);\n if (property === undefined) {\n property = [];\n properties.set(key, property);\n } else if (!mergeSubDicts || !(value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict._map[name] = values[0];\n continue;\n }\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n for (const [key, value] of Object.entries(dict._map)) {\n if (subDict._map[key] === undefined) {\n subDict._map[key] = value;\n }\n }\n }\n if (subDict.size > 0) {\n mergedDict._map[name] = subDict;\n }\n }\n properties.clear();\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n}\n\nconst Ref = (function RefClosure() {\n let refCache = Object.create(null);\n\n // eslint-disable-next-line no-shadow\n class Ref {\n constructor(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n if (this.gen === 0) {\n return `${this.num}R`;\n }\n return `${this.num}R${this.gen}`;\n }\n\n static get(num, gen) {\n const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n // eslint-disable-next-line no-restricted-syntax\n return refCache[key] || (refCache[key] = new Ref(num, gen));\n }\n\n static _clearCache() {\n refCache = Object.create(null);\n }\n }\n\n return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n constructor(parent = null) {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n parent &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n this._set = new Set(parent && parent._set);\n }\n\n has(ref) {\n return this._set.has(ref.toString());\n }\n\n put(ref) {\n this._set.add(ref.toString());\n }\n\n remove(ref) {\n this._set.delete(ref.toString());\n }\n\n [Symbol.iterator]() {\n return this._set.values();\n }\n\n clear() {\n this._set.clear();\n }\n}\n\nclass RefSetCache {\n constructor() {\n this._map = new Map();\n }\n\n get size() {\n return this._map.size;\n }\n\n get(ref) {\n return this._map.get(ref.toString());\n }\n\n has(ref) {\n return this._map.has(ref.toString());\n }\n\n put(ref, obj) {\n this._map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this._map.set(ref.toString(), this.get(aliasRef));\n }\n\n [Symbol.iterator]() {\n return this._map.values();\n }\n\n clear() {\n this._map.clear();\n }\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return (\n v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n );\n}\n\nfunction isRefsEqual(v1, v2) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n v1 instanceof Ref && v2 instanceof Ref,\n \"isRefsEqual: Both parameters should be `Ref`s.\"\n );\n }\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction clearPrimitiveCaches() {\n Cmd._clearCache();\n Name._clearCache();\n Ref._clearCache();\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n};\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationEditorPrefix,\n assert,\n BaseException,\n objectSize,\n stringToPDFString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction getLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n let lookup;\n return function () {\n if (initializer) {\n let arr = initializer();\n initializer = null;\n lookup = Object.create(null);\n for (let i = 0, ii = arr.length; i < ii; i += 2) {\n lookup[arr[i]] = arr[i + 1];\n }\n arr = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true,\n}) {\n let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n if (!values) {\n values = [];\n }\n values.push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(\n Number.isInteger(number) && number > 0,\n \"The number should be a positive integer.\"\n );\n const romanBuf = [];\n let pos;\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push(\"M\");\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push\n\n const romanStr = romanBuf.join(\"\");\n return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n if (x <= 0) {\n return 0;\n }\n return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n const positionPattern = /(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16)}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n\n return buffer.join(\"\");\n}\n\n// Replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\" by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n// in order to write it in a PDF file.\nfunction escapeString(str) {\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code = code && stringToPDFString(code).replace(/\\u0000/g, \"\");\n if (code) {\n list.push(code);\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = Object.create(null);\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const key of additionalActions.getKeys()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const actionDict = additionalActions.getRaw(key);\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions[action] = list;\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.Action = list;\n }\n }\n return objectSize(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"<\",\n /* > */ 0x3e: \">\",\n /* & */ 0x26: \"&\",\n /* \" */ 0x22: \""\",\n /* ' */ 0x27: \"'\",\n};\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start, str.length));\n }\n return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n if (/^\".*\"$/.test(fontFamily)) {\n if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n return false;\n }\n } else if (/^'.*'$/.test(fontFamily)) {\n if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n warn(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n warn(\n `XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`\n );\n return false;\n }\n }\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\n // Attempt to recover valid URLs from `JS` entries with certain\n // white-listed formats:\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\n \"^\\\\s*(\" +\n URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") +\n \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n \"i\"\n );\n\n const jsUrl = regex.exec(str);\n if (jsUrl && jsUrl[2]) {\n const url = jsUrl[2];\n let newWindow = false;\n\n if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n newWindow = true;\n }\n return { url, newWindow };\n }\n\n return null;\n}\n\nfunction numberToString(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction getNewAnnotationsMap(annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const newAnnotationsByPage = new Map();\n // The concept of page in a XFA is very different, so\n // editing is just not implemented.\n for (const [key, value] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n let annotations = newAnnotationsByPage.get(value.pageIndex);\n if (!annotations) {\n annotations = [];\n newAnnotationsByPage.set(value.pageIndex, annotations);\n }\n annotations.push(value);\n }\n return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16HexString(str) {\n const buf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n ((char >> 8) & 0xff).toString(16).padStart(2, \"0\"),\n (char & 0xff).toString(16).padStart(2, \"0\")\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF16String(str, bigEndian = false) {\n const buf = [];\n if (bigEndian) {\n buf.push(\"\\xFE\\xFF\");\n }\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction getRotationMatrix(rotation, width, height) {\n switch (rotation) {\n case 90:\n return [0, 1, -1, 0, width, 0];\n case 180:\n return [-1, 0, 0, -1, width, height];\n case 270:\n return [0, -1, 1, 0, 0, height];\n default:\n throw new Error(\"Invalid rotation\");\n }\n}\n\nexport {\n collectActions,\n encodeToXmlString,\n escapePDFName,\n escapeString,\n getArrayLookupTableFactory,\n getInheritableProperty,\n getLookupTableFactory,\n getNewAnnotationsMap,\n getRotationMatrix,\n isAscii,\n isWhiteSpace,\n log2,\n MissingDataException,\n numberToString,\n ParserEOFException,\n parseXFAPath,\n PDF_VERSION_REGEXP,\n readInt8,\n readUint16,\n readUint32,\n recoverJsURL,\n stringToUTF16HexString,\n stringToUTF16String,\n toRomanNumerals,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (this.constructor === BaseStream) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n getBytes(length) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n\n peekBytes(length) {\n const bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n}\n\nexport { BaseStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createValidAbsoluteUrl,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { ChunkedStreamManager } from \"./chunked_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { PDFDocument } from \"./document.js\";\nimport { Stream } from \"./stream.js\";\n\nfunction parseDocBaseUrl(url) {\n if (url) {\n const absoluteUrl = createValidAbsoluteUrl(url);\n if (absoluteUrl) {\n return absoluteUrl.href;\n }\n warn(`Invalid absolute docBaseUrl: \"${url}\".`);\n }\n return null;\n}\n\nclass BasePdfManager {\n constructor() {\n if (this.constructor === BasePdfManager) {\n unreachable(\"Cannot initialize BasePdfManager.\");\n }\n }\n\n get docId() {\n return this._docId;\n }\n\n get password() {\n return this._password;\n }\n\n get docBaseUrl() {\n const catalog = this.pdfDocument.catalog;\n return shadow(this, \"docBaseUrl\", catalog.baseUrl || this._docBaseUrl);\n }\n\n ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n }\n\n ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n }\n\n ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n }\n\n getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n }\n\n fontFallback(id, handler) {\n return this.pdfDocument.fontFallback(id, handler);\n }\n\n loadXfaFonts(handler, task) {\n return this.pdfDocument.loadXfaFonts(handler, task);\n }\n\n loadXfaImages() {\n return this.pdfDocument.loadXfaImages();\n }\n\n serializeXfaData(annotationStorage) {\n return this.pdfDocument.serializeXfaData(annotationStorage);\n }\n\n cleanup(manuallyTriggered = false) {\n return this.pdfDocument.cleanup(manuallyTriggered);\n }\n\n async ensure(obj, prop, args) {\n unreachable(\"Abstract method `ensure` called\");\n }\n\n requestRange(begin, end) {\n unreachable(\"Abstract method `requestRange` called\");\n }\n\n requestLoadedStream(noFetch = false) {\n unreachable(\"Abstract method `requestLoadedStream` called\");\n }\n\n sendProgressiveData(chunk) {\n unreachable(\"Abstract method `sendProgressiveData` called\");\n }\n\n updatePassword(password) {\n this._password = password;\n }\n\n terminate(reason) {\n unreachable(\"Abstract method `terminate` called\");\n }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n constructor(\n docId,\n data,\n password,\n msgHandler,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n const stream = new Stream(data);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamPromise = Promise.resolve(stream);\n }\n\n async ensure(obj, prop, args) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n }\n\n requestRange(begin, end) {\n return Promise.resolve();\n }\n\n requestLoadedStream(noFetch = false) {\n return this._loadedStreamPromise;\n }\n\n terminate(reason) {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n constructor(\n docId,\n pdfNetworkStream,\n args,\n evaluatorOptions,\n enableXfa,\n docBaseUrl\n ) {\n super();\n\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n this.enableXfa = enableXfa;\n\n this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n msgHandler: args.msgHandler,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize,\n });\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n\n async ensure(obj, prop, args) {\n try {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, args);\n }\n return value;\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.requestRange(ex.begin, ex.end);\n return this.ensure(obj, prop, args);\n }\n }\n\n requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n }\n\n requestLoadedStream(noFetch = false) {\n return this.streamManager.requestAllChunks(noFetch);\n }\n\n sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({ chunk });\n }\n\n terminate(reason) {\n this.streamManager.abort(reason);\n }\n}\n\nexport { LocalPdfManager, NetworkPdfManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength,\n arraysToBytes,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nclass ChunkedStream extends Stream {\n constructor(length, chunkSize, manager) {\n super(\n /* arrayBuffer = */ new Uint8Array(length),\n /* start = */ 0,\n /* length = */ length,\n /* dict = */ null\n );\n\n this.chunkSize = chunkSize;\n this._loadedChunks = new Set();\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1; // Single-entry cache\n }\n\n // If a particular stream does not implement one or more of these methods,\n // an error should be thrown.\n getMissingChunks() {\n const chunks = [];\n for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n chunks.push(chunk);\n }\n }\n return chunks;\n }\n\n get numChunksLoaded() {\n return this._loadedChunks.size;\n }\n\n get isDataLoaded() {\n return this.numChunksLoaded === this.numChunks;\n }\n\n onReceiveData(begin, chunk) {\n const chunkSize = this.chunkSize;\n if (begin % chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n\n // Using `this.length` is inaccurate here since `this.start` can be moved\n // (see the `moveStart` method).\n const end = begin + chunk.byteLength;\n if (end % chunkSize !== 0 && end !== this.bytes.length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n const beginChunk = Math.floor(begin / chunkSize);\n const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n onReceiveProgressiveData(data) {\n let position = this.progressiveDataLength;\n const beginChunk = Math.floor(position / this.chunkSize);\n\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n const endChunk =\n position >= this.end\n ? this.numChunks\n : Math.floor(position / this.chunkSize);\n\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // Since a value can only occur *once* in a `Set`, there's no need to\n // manually check `Set.prototype.has()` before adding the value here.\n this._loadedChunks.add(curChunk);\n }\n }\n\n ensureByte(pos) {\n if (pos < this.progressiveDataLength) {\n return;\n }\n\n const chunk = Math.floor(pos / this.chunkSize);\n if (chunk > this.numChunks) {\n return;\n }\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n }\n\n ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n if (beginChunk > this.numChunks) {\n return;\n }\n const endChunk = Math.min(\n Math.floor((end - 1) / this.chunkSize) + 1,\n this.numChunks\n );\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n throw new MissingDataException(begin, end);\n }\n }\n }\n\n nextEmptyChunk(beginChunk) {\n const numChunks = this.numChunks;\n for (let i = 0; i < numChunks; ++i) {\n const chunk = (beginChunk + i) % numChunks; // Wrap around to beginning.\n if (!this._loadedChunks.has(chunk)) {\n return chunk;\n }\n }\n return null;\n }\n\n hasChunk(chunk) {\n return this._loadedChunks.has(chunk);\n }\n\n getByte() {\n const pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n if (pos >= this.progressiveDataLength) {\n this.ensureByte(pos);\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n if (strEnd > this.progressiveDataLength) {\n this.ensureRange(pos, strEnd);\n }\n return bytes.subarray(pos, strEnd);\n }\n\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(pos, end);\n }\n\n this.pos = end;\n return bytes.subarray(pos, end);\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n if (end > this.progressiveDataLength) {\n this.ensureRange(begin, end);\n }\n return this.bytes.subarray(begin, end);\n }\n\n makeSubStream(start, length, dict = null) {\n if (length) {\n if (start + length > this.progressiveDataLength) {\n this.ensureRange(start, start + length);\n }\n } else {\n // When the `length` is undefined you do *not*, under any circumstances,\n // want to fallback on calling `this.ensureRange(start, this.end)` since\n // that would force the *entire* PDF file to be loaded, thus completely\n // breaking the whole purpose of using streaming and/or range requests.\n //\n // However, not doing any checking here could very easily lead to wasted\n // time/resources during e.g. parsing, since `MissingDataException`s will\n // require data to be re-parsed, which we attempt to minimize by at least\n // checking that the *beginning* of the data is available here.\n if (start >= this.progressiveDataLength) {\n this.ensureByte(start);\n }\n }\n\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n const chunkSize = this.chunkSize;\n const beginChunk = Math.floor(this.start / chunkSize);\n const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n const missingChunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this._loadedChunks.has(chunk)) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n get() {\n if (this.numChunksLoaded === this.numChunks) {\n return true;\n }\n return this.getMissingChunks().length === 0;\n },\n configurable: true,\n });\n\n const subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n }\n\n getBaseStreams() {\n return [this];\n }\n}\n\nclass ChunkedStreamManager {\n constructor(pdfNetworkStream, args) {\n this.length = args.length;\n this.chunkSize = args.rangeChunkSize;\n this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n this.pdfNetworkStream = pdfNetworkStream;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n\n this.currRequestId = 0;\n\n this._chunksNeededByRequest = new Map();\n this._requestsByChunk = new Map();\n this._promisesByRequest = new Map();\n this.progressiveDataLength = 0;\n this.aborted = false;\n\n this._loadedStreamCapability = createPromiseCapability();\n }\n\n sendRequest(begin, end) {\n const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n\n let chunks = [],\n loaded = 0;\n return new Promise((resolve, reject) => {\n const readChunk = chunk => {\n try {\n if (!chunk.done) {\n const data = chunk.value;\n chunks.push(data);\n loaded += arrayByteLength(data);\n if (rangeReader.isStreamingSupported) {\n this.onProgress({ loaded });\n }\n rangeReader.read().then(readChunk, reject);\n return;\n }\n const chunkData = arraysToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n }).then(data => {\n if (this.aborted) {\n return; // Ignoring any data after abort.\n }\n this.onReceiveData({ chunk: data, begin });\n });\n }\n\n /**\n * Get all the chunks that are not yet loaded and group them into\n * contiguous ranges to load in as few requests as possible.\n */\n requestAllChunks(noFetch = false) {\n if (!noFetch) {\n const missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n }\n return this._loadedStreamCapability.promise;\n }\n\n _requestChunks(chunks) {\n const requestId = this.currRequestId++;\n\n const chunksNeeded = new Set();\n this._chunksNeededByRequest.set(requestId, chunksNeeded);\n for (const chunk of chunks) {\n if (!this.stream.hasChunk(chunk)) {\n chunksNeeded.add(chunk);\n }\n }\n\n if (chunksNeeded.size === 0) {\n return Promise.resolve();\n }\n\n const capability = createPromiseCapability();\n this._promisesByRequest.set(requestId, capability);\n\n const chunksToRequest = [];\n for (const chunk of chunksNeeded) {\n let requestIds = this._requestsByChunk.get(chunk);\n if (!requestIds) {\n requestIds = [];\n this._requestsByChunk.set(chunk, requestIds);\n\n chunksToRequest.push(chunk);\n }\n requestIds.push(requestId);\n }\n\n if (chunksToRequest.length > 0) {\n const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n for (const groupedChunk of groupedChunksToRequest) {\n const begin = groupedChunk.beginChunk * this.chunkSize;\n const end = Math.min(\n groupedChunk.endChunk * this.chunkSize,\n this.length\n );\n this.sendRequest(begin, end).catch(capability.reject);\n }\n }\n\n return capability.promise.catch(reason => {\n if (this.aborted) {\n return; // Ignoring any pending requests after abort.\n }\n throw reason;\n });\n }\n\n getStream() {\n return this.stream;\n }\n\n /**\n * Loads any chunks in the requested range that are not yet loaded.\n */\n requestRange(begin, end) {\n end = Math.min(end, this.length);\n\n const beginChunk = this.getBeginChunk(begin);\n const endChunk = this.getEndChunk(end);\n\n const chunks = [];\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n return this._requestChunks(chunks);\n }\n\n requestRanges(ranges = []) {\n const chunksToRequest = [];\n for (const range of ranges) {\n const beginChunk = this.getBeginChunk(range.begin);\n const endChunk = this.getEndChunk(range.end);\n for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!chunksToRequest.includes(chunk)) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function (a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n }\n\n /**\n * Groups a sorted array of chunks into as few contiguous larger\n * chunks as possible.\n */\n groupChunks(chunks) {\n const groupedChunks = [];\n let beginChunk = -1;\n let prevChunk = -1;\n\n for (let i = 0, ii = chunks.length; i < ii; ++i) {\n const chunk = chunks[i];\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\n }\n\n prevChunk = chunk;\n }\n return groupedChunks;\n }\n\n onProgress(args) {\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n total: this.length,\n });\n }\n\n onReceiveData(args) {\n const chunk = args.chunk;\n const isProgressive = args.begin === undefined;\n const begin = isProgressive ? this.progressiveDataLength : args.begin;\n const end = begin + chunk.byteLength;\n\n const beginChunk = Math.floor(begin / this.chunkSize);\n const endChunk =\n end < this.length\n ? Math.floor(end / this.chunkSize)\n : Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.isDataLoaded) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n const loadedRequests = [];\n for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n // The server might return more chunks than requested.\n const requestIds = this._requestsByChunk.get(curChunk);\n if (!requestIds) {\n continue;\n }\n this._requestsByChunk.delete(curChunk);\n\n for (const requestId of requestIds) {\n const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n if (chunksNeeded.has(curChunk)) {\n chunksNeeded.delete(curChunk);\n }\n\n if (chunksNeeded.size > 0) {\n continue;\n }\n loadedRequests.push(requestId);\n }\n }\n\n // If there are no pending requests, automatically fetch the next\n // unfetched chunk of the PDF file.\n if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n let nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\n // This is a special optimization so that after fetching the first\n // chunk, rather than fetching the second chunk, we fetch the last\n // chunk.\n const lastChunk = this.stream.numChunks - 1;\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n if (Number.isInteger(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (const requestId of loadedRequests) {\n const capability = this._promisesByRequest.get(requestId);\n this._promisesByRequest.delete(requestId);\n capability.resolve();\n }\n\n this.msgHandler.send(\"DocProgress\", {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length,\n });\n }\n\n onError(err) {\n this._loadedStreamCapability.reject(err);\n }\n\n getBeginChunk(begin) {\n return Math.floor(begin / this.chunkSize);\n }\n\n getEndChunk(end) {\n return Math.floor((end - 1) / this.chunkSize) + 1;\n }\n\n abort(reason) {\n this.aborted = true;\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests(reason);\n }\n for (const capability of this._promisesByRequest.values()) {\n capability.reject(reason);\n }\n }\n}\n\nexport { ChunkedStream, ChunkedStreamManager };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\n this.bytes =\n arrayBuffer instanceof Uint8Array\n ? arrayBuffer\n : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n }\n\n getBytes(length) {\n const bytes = this.bytes;\n const pos = this.pos;\n const strEnd = this.end;\n\n if (!length) {\n return bytes.subarray(pos, strEnd);\n }\n let end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n return bytes.subarray(pos, end);\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n}\n\nclass StringStream extends Stream {\n constructor(str) {\n super(stringToBytes(str));\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationFactory, PopupAnnotation } from \"./annotation.js\";\nimport {\n assert,\n FormatError,\n info,\n InvalidPDFException,\n isArrayEqual,\n PageActionEventType,\n RenderingIntentFlag,\n shadow,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n collectActions,\n getInheritableProperty,\n getNewAnnotationsMap,\n isWhiteSpace,\n MissingDataException,\n PDF_VERSION_REGEXP,\n validateCSSFont,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { DatasetReader } from \"./dataset_reader.js\";\nimport { Linearization } from \"./parser.js\";\nimport { NullStream } from \"./stream.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PartialEvaluator } from \"./evaluator.js\";\nimport { StreamsSequenceStream } from \"./decode_stream.js\";\nimport { StructTreePage } from \"./struct_tree.js\";\nimport { writeObject } from \"./writer.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\nimport { XRef } from \"./xref.js\";\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n constructor({\n pdfManager,\n xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n nonBlendModesSet,\n xfaFactory,\n }) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.nonBlendModesSet = nonBlendModesSet;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n this.xfaFactory = xfaFactory;\n\n const idCounters = {\n obj: 0,\n };\n this._localIdFactory = class extends globalIdFactory {\n static createObjId() {\n return `p${pageIndex}_${++idCounters.obj}`;\n }\n\n static getPageObjId() {\n return `page${ref.toString()}`;\n }\n };\n }\n\n /**\n * @private\n */\n _getInheritableProperty(key, getArray = false) {\n const value = getInheritableProperty({\n dict: this.pageDict,\n key,\n getArray,\n stopWhenFound: false,\n });\n if (!Array.isArray(value)) {\n return value;\n }\n if (value.length === 1 || !(value[0] instanceof Dict)) {\n return value[0];\n }\n return Dict.merge({ xref: this.xref, dictArray: value });\n }\n\n get content() {\n return this.pageDict.getArray(\"Contents\");\n }\n\n get resources() {\n // For robustness: The spec states that a \\Resources entry has to be\n // present, but can be empty. Some documents still omit it; in this case\n // we return an empty dictionary.\n const resources = this._getInheritableProperty(\"Resources\");\n\n return shadow(\n this,\n \"resources\",\n resources instanceof Dict ? resources : Dict.empty\n );\n }\n\n _getBoundingBox(name) {\n if (this.xfaData) {\n return this.xfaData.bbox;\n }\n let box = this._getInheritableProperty(name, /* getArray = */ true);\n\n if (Array.isArray(box) && box.length === 4) {\n box = Util.normalizeRect(box);\n if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return box;\n }\n warn(`Empty, or invalid, /${name} entry.`);\n }\n return null;\n }\n\n get mediaBox() {\n // Reset invalid media box to letter size.\n return shadow(\n this,\n \"mediaBox\",\n this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX\n );\n }\n\n get cropBox() {\n // Reset invalid crop box to media box.\n return shadow(\n this,\n \"cropBox\",\n this._getBoundingBox(\"CropBox\") || this.mediaBox\n );\n }\n\n get userUnit() {\n let obj = this.pageDict.get(\"UserUnit\");\n if (typeof obj !== \"number\" || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n return shadow(this, \"userUnit\", obj);\n }\n\n get view() {\n // From the spec, 6th ed., p.963:\n // \"The crop, bleed, trim, and art boxes should not ordinarily\n // extend beyond the boundaries of the media box. If they do, they are\n // effectively reduced to their intersection with the media box.\"\n const { cropBox, mediaBox } = this;\n\n if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) {\n const box = Util.intersect(cropBox, mediaBox);\n if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n return shadow(this, \"view\", box);\n }\n warn(\"Empty /CropBox and /MediaBox intersection.\");\n }\n return shadow(this, \"view\", mediaBox);\n }\n\n get rotate() {\n let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n // Normalize rotation so it's a multiple of 90 and between 0 and 270.\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate %= 360;\n } else if (rotate < 0) {\n // The spec doesn't cover negatives. Assume it's counterclockwise\n // rotation. The following is the other implementation of modulo.\n rotate = ((rotate % 360) + 360) % 360;\n }\n return shadow(this, \"rotate\", rotate);\n }\n\n /**\n * @private\n */\n _onSubStreamError(handler, reason, objId) {\n if (this.evaluatorOptions.ignoreErrors) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error(s) when reading one of the /Contents sub-streams -- sending\n // unsupported feature notification and allow parsing to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorContentSubStream,\n });\n }\n warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n /**\n * @returns {Promise<BaseStream>}\n */\n getContentStream(handler) {\n return this.pdfManager.ensure(this, \"content\").then(content => {\n if (content instanceof BaseStream) {\n return content;\n }\n if (Array.isArray(content)) {\n return new StreamsSequenceStream(\n content,\n this._onSubStreamError.bind(this, handler)\n );\n }\n // Replace non-existent page content with empty content.\n return new NullStream();\n });\n }\n\n get xfaData() {\n return shadow(\n this,\n \"xfaData\",\n this.xfaFactory\n ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\n : null\n );\n }\n\n async saveNewAnnotations(handler, task, annotations) {\n if (this.xfaFactory) {\n throw new Error(\"XFA: Cannot save new annotations.\");\n }\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n const pageDict = this.pageDict;\n const annotationsArray = this.annotations.slice();\n const newData = await AnnotationFactory.saveNewAnnotations(\n partialEvaluator,\n task,\n annotations\n );\n\n for (const { ref } of newData.annotations) {\n annotationsArray.push(ref);\n }\n\n const savedDict = pageDict.get(\"Annots\");\n pageDict.set(\"Annots\", annotationsArray);\n const buffer = [];\n\n let transform = null;\n if (this.xref.encrypt) {\n transform = this.xref.encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n writeObject(this.ref, pageDict, buffer, transform);\n if (savedDict) {\n pageDict.set(\"Annots\", savedDict);\n }\n\n const objects = newData.dependencies;\n objects.push(\n { ref: this.ref, data: buffer.join(\"\") },\n ...newData.annotations\n );\n\n return objects;\n }\n\n save(handler, task, annotationStorage) {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n // Fetch the page's annotations and save the content\n // in case of interactive form fields.\n return this._parsedAnnotations.then(function (annotations) {\n const newRefsPromises = [];\n for (const annotation of annotations) {\n if (!annotation.mustBePrinted(annotationStorage)) {\n continue;\n }\n newRefsPromises.push(\n annotation\n .save(partialEvaluator, task, annotationStorage)\n .catch(function (reason) {\n warn(\n \"save - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return null;\n })\n );\n }\n\n return Promise.all(newRefsPromises).then(function (newRefs) {\n return newRefs.filter(newRef => !!newRef);\n });\n });\n }\n\n loadResources(keys) {\n if (!this.resourcesPromise) {\n // TODO: add async `_getInheritableProperty` and remove this.\n this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n }\n return this.resourcesPromise.then(() => {\n const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n return objectLoader.load();\n });\n }\n\n getOperatorList({\n handler,\n sink,\n task,\n intent,\n cacheKey,\n annotationStorage = null,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\n ]);\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n const newAnnotationsByPage = !this.xfaFactory\n ? getNewAnnotationsMap(annotationStorage)\n : null;\n\n let newAnnotationsPromise = Promise.resolve(null);\n if (newAnnotationsByPage) {\n const newAnnotations = newAnnotationsByPage.get(this.pageIndex);\n if (newAnnotations) {\n newAnnotationsPromise = AnnotationFactory.printNewAnnotations(\n partialEvaluator,\n task,\n newAnnotations\n );\n }\n }\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n const pageListPromise = dataPromises.then(([contentStream]) => {\n const opList = new OperatorList(intent, sink);\n\n handler.send(\"StartRenderPage\", {\n transparency: partialEvaluator.hasBlendModes(\n this.resources,\n this.nonBlendModesSet\n ),\n pageIndex: this.pageIndex,\n cacheKey,\n });\n\n return partialEvaluator\n .getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList,\n })\n .then(function () {\n return opList;\n });\n });\n\n // Fetch the page's annotations and add their operator lists to the\n // page's operator list to render them.\n return Promise.all([\n pageListPromise,\n this._parsedAnnotations,\n newAnnotationsPromise,\n ]).then(function ([pageOpList, annotations, newAnnotations]) {\n if (newAnnotations) {\n annotations = annotations.concat(newAnnotations);\n }\n if (\n annotations.length === 0 ||\n intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\n ) {\n pageOpList.flush(/* lastChunk = */ true);\n return { length: pageOpList.totalLength };\n }\n const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n // Collect the operator list promises for the annotations. Each promise\n // is resolved with the complete operator list for a single annotation.\n const opListPromises = [];\n for (const annotation of annotations) {\n if (\n intentAny ||\n (intentDisplay && annotation.mustBeViewed(annotationStorage)) ||\n (intentPrint && annotation.mustBePrinted(annotationStorage))\n ) {\n opListPromises.push(\n annotation\n .getOperatorList(\n partialEvaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n )\n .catch(function (reason) {\n warn(\n \"getOperatorList - ignoring annotation data during \" +\n `\"${task.name}\" task: \"${reason}\".`\n );\n return {\n opList: null,\n separateForm: false,\n separateCanvas: false,\n };\n })\n );\n }\n }\n\n return Promise.all(opListPromises).then(function (opLists) {\n let form = false,\n canvas = false;\n\n for (const { opList, separateForm, separateCanvas } of opLists) {\n pageOpList.addOpList(opList);\n\n if (separateForm) {\n form = separateForm;\n }\n if (separateCanvas) {\n canvas = separateCanvas;\n }\n }\n pageOpList.flush(\n /* lastChunk = */ true,\n /* separateAnnots = */ { form, canvas }\n );\n return { length: pageOpList.totalLength };\n });\n });\n }\n\n extractTextContent({\n handler,\n task,\n includeMarkedContent,\n sink,\n combineTextItems,\n }) {\n const contentStreamPromise = this.getContentStream(handler);\n const resourcesPromise = this.loadResources([\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\n ]);\n\n const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n includeMarkedContent,\n combineTextItems,\n sink,\n viewBox: this.view,\n });\n });\n }\n\n async getStructTree() {\n const structTreeRoot = await this.pdfManager.ensureCatalog(\n \"structTreeRoot\"\n );\n if (!structTreeRoot) {\n return null;\n }\n const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [\n structTreeRoot,\n ]);\n return structTree.serializable;\n }\n\n /**\n * @private\n */\n _parseStructTree(structTreeRoot) {\n const tree = new StructTreePage(structTreeRoot, this.pageDict);\n tree.parse();\n return tree;\n }\n\n async getAnnotationsData(handler, task, intent) {\n const annotations = await this._parsedAnnotations;\n if (annotations.length === 0) {\n return [];\n }\n\n const textContentPromises = [];\n const annotationsData = [];\n let partialEvaluator;\n\n const intentAny = !!(intent & RenderingIntentFlag.ANY),\n intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n\n for (const annotation of annotations) {\n // Get the annotation even if it's hidden because\n // JS can change its display.\n const isVisible = intentAny || (intentDisplay && annotation.viewable);\n if (isVisible || (intentPrint && annotation.printable)) {\n annotationsData.push(annotation.data);\n }\n\n if (annotation.hasTextContent && isVisible) {\n if (!partialEvaluator) {\n partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this._localIdFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n standardFontDataCache: this.standardFontDataCache,\n globalImageCache: this.globalImageCache,\n options: this.evaluatorOptions,\n });\n }\n textContentPromises.push(\n annotation\n .extractTextContent(partialEvaluator, task, this.view)\n .catch(function (reason) {\n warn(\n `getAnnotationsData - ignoring textContent during \"${task.name}\" task: \"${reason}\".`\n );\n })\n );\n }\n }\n\n await Promise.all(textContentPromises);\n return annotationsData;\n }\n\n get annotations() {\n const annots = this._getInheritableProperty(\"Annots\");\n return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n }\n\n get _parsedAnnotations() {\n const parsedAnnotations = this.pdfManager\n .ensure(this, \"annotations\")\n .then(() => {\n const annotationPromises = [];\n for (const annotationRef of this.annotations) {\n annotationPromises.push(\n AnnotationFactory.create(\n this.xref,\n annotationRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ false\n ).catch(function (reason) {\n warn(`_parsedAnnotations: \"${reason}\".`);\n return null;\n })\n );\n }\n\n return Promise.all(annotationPromises).then(function (annotations) {\n if (annotations.length === 0) {\n return annotations;\n }\n\n const sortedAnnotations = [];\n let popupAnnotations;\n // Ensure that PopupAnnotations are handled last, since they depend on\n // their parent Annotation in the display layer; fixes issue 11362.\n for (const annotation of annotations) {\n if (!annotation) {\n continue;\n }\n if (annotation instanceof PopupAnnotation) {\n if (!popupAnnotations) {\n popupAnnotations = [];\n }\n popupAnnotations.push(annotation);\n continue;\n }\n sortedAnnotations.push(annotation);\n }\n if (popupAnnotations) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n return sortedAnnotations;\n });\n });\n\n return shadow(this, \"_parsedAnnotations\", parsedAnnotations);\n }\n\n get jsActions() {\n const actions = collectActions(\n this.xref,\n this.pageDict,\n PageActionEventType\n );\n return shadow(this, \"jsActions\", actions);\n }\n}\n\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([\n 0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\n]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT =\n \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(limit > 0, 'The \"limit\" must be a positive integer.');\n }\n const signatureLength = signature.length;\n\n const scanBytes = stream.peekBytes(limit);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n return false;\n }\n if (backwards) {\n const signatureEnd = signatureLength - 1;\n\n let pos = scanBytes.length - 1;\n while (pos >= signatureEnd) {\n let j = 0;\n while (\n j < signatureLength &&\n scanBytes[pos - j] === signature[signatureEnd - j]\n ) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos - signatureEnd;\n return true;\n }\n pos--;\n }\n } else {\n // forwards\n let pos = 0;\n while (pos <= scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return true;\n }\n pos++;\n }\n }\n return false;\n}\n\n/**\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\n */\nclass PDFDocument {\n constructor(pdfManager, stream) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n stream instanceof BaseStream,\n 'PDFDocument: Invalid \"stream\" argument.'\n );\n }\n if (stream.length <= 0) {\n throw new InvalidPDFException(\n \"The PDF file is empty, i.e. its size is zero bytes.\"\n );\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n this._pagePromises = new Map();\n this._version = null;\n\n const idCounters = {\n font: 0,\n };\n this._globalIdFactory = class {\n static getDocId() {\n return `g_${pdfManager.docId}`;\n }\n\n static createFontId() {\n return `f${++idCounters.font}`;\n }\n\n static createObjId() {\n unreachable(\"Abstract method `createObjId` called.\");\n }\n\n static getPageObjId() {\n unreachable(\"Abstract method `getPageObjId` called.\");\n }\n };\n }\n\n parse(recoveryMode) {\n this.xref.parse(recoveryMode);\n this.catalog = new Catalog(this.pdfManager, this.xref);\n }\n\n get linearization() {\n let linearization = null;\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n return shadow(this, \"linearization\", linearization);\n }\n\n get startXRef() {\n const stream = this.stream;\n let startXRef = 0;\n\n if (this.linearization) {\n // Find the end of the first object.\n stream.reset();\n if (find(stream, ENDOBJ_SIGNATURE)) {\n startXRef = stream.pos + 6 - stream.start;\n }\n } else {\n // Find `startxref` by checking backwards from the end of the file.\n const step = 1024;\n const startXRefLength = STARTXREF_SIGNATURE.length;\n let found = false,\n pos = stream.end;\n\n while (!found && pos > 0) {\n pos -= step - startXRefLength;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, STARTXREF_SIGNATURE, step, true);\n }\n\n if (found) {\n stream.skip(9);\n let ch;\n do {\n ch = stream.getByte();\n } while (isWhiteSpace(ch));\n let str = \"\";\n while (ch >= /* Space = */ 0x20 && ch <= /* '9' = */ 0x39) {\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n return shadow(this, \"startXRef\", startXRef);\n }\n\n // Find the header, get the PDF format version and setup the\n // stream to start from the header.\n checkHeader() {\n const stream = this.stream;\n stream.reset();\n\n if (!find(stream, PDF_HEADER_SIGNATURE)) {\n // May not be a PDF file, but don't throw an error and let\n // parsing continue.\n return;\n }\n stream.moveStart();\n\n // Skip over the \"%PDF-\" prefix, since it was found above.\n stream.skip(PDF_HEADER_SIGNATURE.length);\n // Read the PDF format version.\n let version = \"\",\n ch;\n while (\n (ch = stream.getByte()) > /* Space = */ 0x20 &&\n version.length < /* MAX_PDF_VERSION_LENGTH = */ 7\n ) {\n version += String.fromCharCode(ch);\n }\n\n if (PDF_VERSION_REGEXP.test(version)) {\n this._version = version;\n } else {\n warn(`Invalid PDF header version: ${version}`);\n }\n }\n\n parseStartXRef() {\n this.xref.setStartXRef(this.startXRef);\n }\n\n get numPages() {\n let num = 0;\n if (this.catalog.hasActualNumPages) {\n num = this.catalog.numPages;\n } else if (this.xfaFactory) {\n // num is a Promise.\n num = this.xfaFactory.getNumPages();\n } else if (this.linearization) {\n num = this.linearization.numPages;\n } else {\n num = this.catalog.numPages;\n }\n return shadow(this, \"numPages\", num);\n }\n\n /**\n * @private\n */\n _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n const RECURSION_LIMIT = 10;\n\n if (!Array.isArray(fields)) {\n return false;\n }\n return fields.every(field => {\n field = this.xref.fetchIfRef(field);\n if (!(field instanceof Dict)) {\n return false;\n }\n if (field.has(\"Kids\")) {\n if (++recursionDepth > RECURSION_LIMIT) {\n warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n return false;\n }\n return this._hasOnlyDocumentSignatures(\n field.get(\"Kids\"),\n recursionDepth\n );\n }\n const isSignature = isName(field.get(\"FT\"), \"Sig\");\n const rectangle = field.get(\"Rect\");\n const isInvisible =\n Array.isArray(rectangle) && rectangle.every(value => value === 0);\n return isSignature && isInvisible;\n });\n }\n\n get _xfaStreams() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return null;\n }\n\n const xfa = acroForm.get(\"XFA\");\n const entries = {\n \"xdp:xdp\": \"\",\n template: \"\",\n datasets: \"\",\n config: \"\",\n connectionSet: \"\",\n localeSet: \"\",\n stylesheet: \"\",\n \"/xdp:xdp\": \"\",\n };\n if (xfa instanceof BaseStream && !xfa.isEmpty) {\n entries[\"xdp:xdp\"] = xfa;\n return entries;\n }\n\n if (!Array.isArray(xfa) || xfa.length === 0) {\n return null;\n }\n\n for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n let name;\n if (i === 0) {\n name = \"xdp:xdp\";\n } else if (i === ii - 2) {\n name = \"/xdp:xdp\";\n } else {\n name = xfa[i];\n }\n\n if (!entries.hasOwnProperty(name)) {\n continue;\n }\n const data = this.xref.fetchIfRef(xfa[i + 1]);\n if (!(data instanceof BaseStream) || data.isEmpty) {\n continue;\n }\n entries[name] = data;\n }\n return entries;\n }\n\n get xfaDatasets() {\n const streams = this._xfaStreams;\n if (!streams) {\n return shadow(this, \"xfaDatasets\", null);\n }\n for (const key of [\"datasets\", \"xdp:xdp\"]) {\n const stream = streams[key];\n if (!stream) {\n continue;\n }\n try {\n const str = stringToUTF8String(stream.getString());\n const data = { [key]: str };\n return shadow(this, \"xfaDatasets\", new DatasetReader(data));\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n break;\n }\n }\n return shadow(this, \"xfaDatasets\", null);\n }\n\n get xfaData() {\n const streams = this._xfaStreams;\n if (!streams) {\n return null;\n }\n const data = Object.create(null);\n for (const [key, stream] of Object.entries(streams)) {\n if (!stream) {\n continue;\n }\n try {\n data[key] = stringToUTF8String(stream.getString());\n } catch (_) {\n warn(\"XFA - Invalid utf-8 string.\");\n return null;\n }\n }\n return data;\n }\n\n get xfaFactory() {\n let data;\n if (\n this.pdfManager.enableXfa &&\n this.catalog.needsRendering &&\n this.formInfo.hasXfa &&\n !this.formInfo.hasAcroForm\n ) {\n data = this.xfaData;\n }\n return shadow(this, \"xfaFactory\", data ? new XFAFactory(data) : null);\n }\n\n get isPureXfa() {\n return this.xfaFactory ? this.xfaFactory.isValid() : false;\n }\n\n get htmlForXfa() {\n return this.xfaFactory ? this.xfaFactory.getPages() : null;\n }\n\n async loadXfaImages() {\n const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n if (!xfaImagesDict) {\n return;\n }\n\n const keys = xfaImagesDict.getKeys();\n const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n await objectLoader.load();\n\n const xfaImages = new Map();\n for (const key of keys) {\n const stream = xfaImagesDict.get(key);\n if (stream instanceof BaseStream) {\n xfaImages.set(key, stream.getBytes());\n }\n }\n\n this.xfaFactory.setImages(xfaImages);\n }\n\n async loadXfaFonts(handler, task) {\n const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n if (!acroForm) {\n return;\n }\n const resources = await acroForm.getAsync(\"DR\");\n if (!(resources instanceof Dict)) {\n return;\n }\n const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n await objectLoader.load();\n\n const fontRes = resources.get(\"Font\");\n if (!(fontRes instanceof Dict)) {\n return;\n }\n\n const options = Object.assign(\n Object.create(null),\n this.pdfManager.evaluatorOptions\n );\n options.useSystemFonts = false;\n\n const partialEvaluator = new PartialEvaluator({\n xref: this.xref,\n handler,\n pageIndex: -1,\n idFactory: this._globalIdFactory,\n fontCache: this.catalog.fontCache,\n builtInCMapCache: this.catalog.builtInCMapCache,\n standardFontDataCache: this.catalog.standardFontDataCache,\n options,\n });\n const operatorList = new OperatorList();\n const pdfFonts = [];\n const initialState = {\n get font() {\n return pdfFonts.at(-1);\n },\n set font(font) {\n pdfFonts.push(font);\n },\n clone() {\n return this;\n },\n };\n\n const fonts = new Map();\n fontRes.forEach((fontName, font) => {\n fonts.set(fontName, font);\n });\n const promises = [];\n\n for (const [fontName, font] of fonts) {\n const descriptor = font.get(\"FontDescriptor\");\n if (!(descriptor instanceof Dict)) {\n continue;\n }\n let fontFamily = descriptor.get(\"FontFamily\");\n // For example, \"Wingdings 3\" is not a valid font name in the css specs.\n fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n const fontWeight = descriptor.get(\"FontWeight\");\n\n // Angle is expressed in degrees counterclockwise in PDF\n // when it's clockwise in CSS\n // (see https://drafts.csswg.org/css-fonts-4/#valdef-font-style-oblique-angle)\n const italicAngle = -descriptor.get(\"ItalicAngle\");\n const cssFontInfo = { fontFamily, fontWeight, italicAngle };\n\n if (!validateCSSFont(cssFontInfo)) {\n continue;\n }\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(fontName), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null,\n /* cssFontInfo = */ cssFontInfo\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n\n await Promise.all(promises);\n const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n if (!missingFonts) {\n return;\n }\n\n options.ignoreErrors = true;\n promises.length = 0;\n pdfFonts.length = 0;\n\n const reallyMissingFonts = new Set();\n for (const missing of missingFonts) {\n if (!getXfaFontName(`${missing}-Regular`)) {\n // No substitution available: we'll fallback on Myriad.\n reallyMissingFonts.add(missing);\n }\n }\n\n if (reallyMissingFonts.size) {\n missingFonts.push(\"PdfJS-Fallback\");\n }\n\n for (const missing of missingFonts) {\n if (reallyMissingFonts.has(missing)) {\n continue;\n }\n for (const fontInfo of [\n { name: \"Regular\", fontWeight: 400, italicAngle: 0 },\n { name: \"Bold\", fontWeight: 700, italicAngle: 0 },\n { name: \"Italic\", fontWeight: 400, italicAngle: 12 },\n { name: \"BoldItalic\", fontWeight: 700, italicAngle: 12 },\n ]) {\n const name = `${missing}-${fontInfo.name}`;\n const dict = getXfaFontDict(name);\n\n promises.push(\n partialEvaluator\n .handleSetFont(\n resources,\n [Name.get(name), 1],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ dict,\n /* cssFontInfo = */ {\n fontFamily: missing,\n fontWeight: fontInfo.fontWeight,\n italicAngle: fontInfo.italicAngle,\n }\n )\n .catch(function (reason) {\n warn(`loadXfaFonts: \"${reason}\".`);\n return null;\n })\n );\n }\n }\n\n await Promise.all(promises);\n this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n }\n\n async serializeXfaData(annotationStorage) {\n return this.xfaFactory\n ? this.xfaFactory.serializeData(annotationStorage)\n : null;\n }\n\n /**\n * The specification states in section 7.5.2 that the version from\n * the catalog, if present, should overwrite the version from the header.\n */\n get version() {\n return this.catalog.version || this._version;\n }\n\n get formInfo() {\n const formInfo = {\n hasFields: false,\n hasAcroForm: false,\n hasXfa: false,\n hasSignatures: false,\n };\n const acroForm = this.catalog.acroForm;\n if (!acroForm) {\n return shadow(this, \"formInfo\", formInfo);\n }\n\n try {\n const fields = acroForm.get(\"Fields\");\n const hasFields = Array.isArray(fields) && fields.length > 0;\n formInfo.hasFields = hasFields; // Used by the `fieldObjects` getter.\n\n // The document contains XFA data if the `XFA` entry is a non-empty\n // array or stream.\n const xfa = acroForm.get(\"XFA\");\n formInfo.hasXfa =\n (Array.isArray(xfa) && xfa.length > 0) ||\n (xfa instanceof BaseStream && !xfa.isEmpty);\n\n // The document contains AcroForm data if the `Fields` entry is a\n // non-empty array and it doesn't consist of only document signatures.\n // This second check is required for files that don't actually contain\n // AcroForm data (only XFA data), but that use the `Fields` entry to\n // store (invisible) document signatures. This can be detected using\n // the first bit of the `SigFlags` integer (see Table 219 in the\n // specification).\n const sigFlags = acroForm.get(\"SigFlags\");\n const hasSignatures = !!(sigFlags & 0x1);\n const hasOnlyDocumentSignatures =\n hasSignatures && this._hasOnlyDocumentSignatures(fields);\n formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n formInfo.hasSignatures = hasSignatures;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Cannot fetch form information: \"${ex}\".`);\n }\n return shadow(this, \"formInfo\", formInfo);\n }\n\n get documentInfo() {\n const docInfo = {\n PDFFormatVersion: this.version,\n Language: this.catalog.lang,\n EncryptFilterName: this.xref.encrypt\n ? this.xref.encrypt.filterName\n : null,\n IsLinearized: !!this.linearization,\n IsAcroFormPresent: this.formInfo.hasAcroForm,\n IsXFAPresent: this.formInfo.hasXfa,\n IsCollectionPresent: !!this.catalog.collection,\n IsSignaturesPresent: this.formInfo.hasSignatures,\n };\n\n let infoDict;\n try {\n infoDict = this.xref.trailer.get(\"Info\");\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(\"The document information dictionary is invalid.\");\n }\n if (!(infoDict instanceof Dict)) {\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n for (const key of infoDict.getKeys()) {\n const value = infoDict.get(key);\n\n switch (key) {\n case \"Title\":\n case \"Author\":\n case \"Subject\":\n case \"Keywords\":\n case \"Creator\":\n case \"Producer\":\n case \"CreationDate\":\n case \"ModDate\":\n if (typeof value === \"string\") {\n docInfo[key] = stringToPDFString(value);\n continue;\n }\n break;\n case \"Trapped\":\n if (value instanceof Name) {\n docInfo[key] = value;\n continue;\n }\n break;\n default:\n // For custom values, only accept white-listed types to prevent\n // errors that would occur when trying to send non-serializable\n // objects to the main-thread (for example `Dict` or `Stream`).\n let customValue;\n switch (typeof value) {\n case \"string\":\n customValue = stringToPDFString(value);\n break;\n case \"number\":\n case \"boolean\":\n customValue = value;\n break;\n default:\n if (value instanceof Name) {\n customValue = value;\n }\n break;\n }\n\n if (customValue === undefined) {\n warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n continue;\n }\n if (!docInfo.Custom) {\n docInfo.Custom = Object.create(null);\n }\n docInfo.Custom[key] = customValue;\n continue;\n }\n warn(`Bad value, for key \"${key}\", in Info: ${value}.`);\n }\n return shadow(this, \"documentInfo\", docInfo);\n }\n\n get fingerprints() {\n function validate(data) {\n return (\n typeof data === \"string\" &&\n data.length > 0 &&\n data !== EMPTY_FINGERPRINT\n );\n }\n\n function hexString(hash) {\n const buf = [];\n for (const num of hash) {\n const hex = num.toString(16);\n buf.push(hex.padStart(2, \"0\"));\n }\n return buf.join(\"\");\n }\n\n const idArray = this.xref.trailer.get(\"ID\");\n let hashOriginal, hashModified;\n if (Array.isArray(idArray) && validate(idArray[0])) {\n hashOriginal = stringToBytes(idArray[0]);\n\n if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n hashModified = stringToBytes(idArray[1]);\n }\n } else {\n hashOriginal = calculateMD5(\n this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\n 0,\n FINGERPRINT_FIRST_BYTES\n );\n }\n\n return shadow(this, \"fingerprints\", [\n hexString(hashOriginal),\n hashModified ? hexString(hashModified) : null,\n ]);\n }\n\n async _getLinearizationPage(pageIndex) {\n const { catalog, linearization, xref } = this;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n linearization && linearization.pageFirst === pageIndex,\n \"_getLinearizationPage - invalid pageIndex argument.\"\n );\n }\n\n const ref = Ref.get(linearization.objectNumberFirst, 0);\n try {\n const obj = await xref.fetchAsync(ref);\n // Ensure that the object that was found is actually a Page dictionary.\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || (!obj.has(\"Type\") && !obj.has(\"Kids\"))) {\n if (!catalog.pageKidsCountCache.has(ref)) {\n catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n }\n // Help improve performance of the `Catalog.getPageIndex` method.\n if (!catalog.pageIndexCache.has(ref)) {\n catalog.pageIndexCache.put(ref, 0);\n }\n\n return [obj, ref];\n }\n }\n throw new FormatError(\n \"The Linearization dictionary doesn't point to a valid Page dictionary.\"\n );\n } catch (reason) {\n warn(`_getLinearizationPage: \"${reason.message}\".`);\n return catalog.getPageDict(pageIndex);\n }\n }\n\n getPage(pageIndex) {\n const cachedPromise = this._pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const { catalog, linearization, xfaFactory } = this;\n\n let promise;\n if (xfaFactory) {\n promise = Promise.resolve([Dict.empty, null]);\n } else if (linearization && linearization.pageFirst === pageIndex) {\n promise = this._getLinearizationPage(pageIndex);\n } else {\n promise = catalog.getPageDict(pageIndex);\n }\n promise = promise.then(([pageDict, ref]) => {\n return new Page({\n pdfManager: this.pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory,\n });\n });\n\n this._pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n async checkFirstPage(recoveryMode = false) {\n if (recoveryMode) {\n return;\n }\n try {\n await this.getPage(0);\n } catch (reason) {\n if (reason instanceof XRefEntryException) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(0);\n await this.cleanup();\n\n throw new XRefParseException();\n }\n }\n }\n\n async checkLastPage(recoveryMode = false) {\n const { catalog, pdfManager } = this;\n\n catalog.setActualNumPages(); // Ensure that it's always reset.\n let numPages;\n\n try {\n await Promise.all([\n pdfManager.ensureDoc(\"xfaFactory\"),\n pdfManager.ensureDoc(\"linearization\"),\n pdfManager.ensureCatalog(\"numPages\"),\n ]);\n\n if (this.xfaFactory) {\n return; // The Page count is always calculated for XFA-documents.\n } else if (this.linearization) {\n numPages = this.linearization.numPages;\n } else {\n numPages = catalog.numPages;\n }\n\n if (!Number.isInteger(numPages)) {\n throw new FormatError(\"Page count is not an integer.\");\n } else if (numPages <= 1) {\n return;\n }\n await this.getPage(numPages - 1);\n } catch (reason) {\n // Clear out the various caches to ensure that we haven't stored any\n // inconsistent and/or incorrect state, since that could easily break\n // subsequent `this.getPage` calls.\n this._pagePromises.delete(numPages - 1);\n await this.cleanup();\n\n if (reason instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n warn(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n\n let pagesTree;\n try {\n pagesTree = await catalog.getAllPageDicts(recoveryMode);\n } catch (reasonAll) {\n if (reasonAll instanceof XRefEntryException && !recoveryMode) {\n throw new XRefParseException();\n }\n catalog.setActualNumPages(1);\n return;\n }\n\n for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n let promise;\n if (pageDict instanceof Error) {\n promise = Promise.reject(pageDict);\n\n // Prevent \"uncaught exception: Object\"-messages in the console.\n promise.catch(() => {});\n } else {\n promise = Promise.resolve(\n new Page({\n pdfManager,\n xref: this.xref,\n pageIndex,\n pageDict,\n ref,\n globalIdFactory: this._globalIdFactory,\n fontCache: catalog.fontCache,\n builtInCMapCache: catalog.builtInCMapCache,\n standardFontDataCache: catalog.standardFontDataCache,\n globalImageCache: catalog.globalImageCache,\n nonBlendModesSet: catalog.nonBlendModesSet,\n xfaFactory: null,\n })\n );\n }\n\n this._pagePromises.set(pageIndex, promise);\n }\n catalog.setActualNumPages(pagesTree.size);\n }\n }\n\n fontFallback(id, handler) {\n return this.catalog.fontFallback(id, handler);\n }\n\n async cleanup(manuallyTriggered = false) {\n return this.catalog\n ? this.catalog.cleanup(manuallyTriggered)\n : clearGlobalCaches();\n }\n\n /**\n * @private\n */\n _collectFieldObjects(name, fieldRef, promises) {\n const field = this.xref.fetchIfRef(fieldRef);\n if (field.has(\"T\")) {\n const partName = stringToPDFString(field.get(\"T\"));\n if (name === \"\") {\n name = partName;\n } else {\n name = `${name}.${partName}`;\n }\n }\n\n if (!promises.has(name)) {\n promises.set(name, []);\n }\n promises.get(name).push(\n AnnotationFactory.create(\n this.xref,\n fieldRef,\n this.pdfManager,\n this._localIdFactory,\n /* collectFields */ true\n )\n .then(annotation => annotation && annotation.getFieldObject())\n .catch(function (reason) {\n warn(`_collectFieldObjects: \"${reason}\".`);\n return null;\n })\n );\n\n if (field.has(\"Kids\")) {\n const kids = field.get(\"Kids\");\n for (const kid of kids) {\n this._collectFieldObjects(name, kid, promises);\n }\n }\n }\n\n get fieldObjects() {\n if (!this.formInfo.hasFields) {\n return shadow(this, \"fieldObjects\", Promise.resolve(null));\n }\n\n const allFields = Object.create(null);\n const fieldPromises = new Map();\n for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n }\n\n const allPromises = [];\n for (const [name, promises] of fieldPromises) {\n allPromises.push(\n Promise.all(promises).then(fields => {\n fields = fields.filter(field => !!field);\n if (fields.length > 0) {\n allFields[name] = fields;\n }\n })\n );\n }\n\n return shadow(\n this,\n \"fieldObjects\",\n Promise.all(allPromises).then(() => allFields)\n );\n }\n\n get hasJSActions() {\n const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n return shadow(this, \"hasJSActions\", promise);\n }\n\n /**\n * @private\n */\n async _parseHasJSActions() {\n const [catalogJsActions, fieldObjects] = await Promise.all([\n this.pdfManager.ensureCatalog(\"jsActions\"),\n this.pdfManager.ensureDoc(\"fieldObjects\"),\n ]);\n\n if (catalogJsActions) {\n return true;\n }\n if (fieldObjects) {\n return Object.values(fieldObjects).some(fieldObject =>\n fieldObject.some(object => object.actions !== null)\n );\n }\n return false;\n }\n\n get calculationOrderIds() {\n const acroForm = this.catalog.acroForm;\n if (!acroForm || !acroForm.has(\"CO\")) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const calculationOrder = acroForm.get(\"CO\");\n if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n\n const ids = [];\n for (const id of calculationOrder) {\n if (id instanceof Ref) {\n ids.push(id.toString());\n }\n }\n if (ids.length === 0) {\n return shadow(this, \"calculationOrderIds\", null);\n }\n return shadow(this, \"calculationOrderIds\", ids);\n }\n}\n\nexport { Page, PDFDocument };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationReplyType,\n AnnotationType,\n assert,\n BASELINE_FACTOR,\n FeatureTest,\n getModificationDate,\n IDENTITY_MATRIX,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n OPS,\n RenderingIntentFlag,\n shadow,\n stringToPDFString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n collectActions,\n escapeString,\n getInheritableProperty,\n getRotationMatrix,\n isAscii,\n numberToString,\n stringToUTF16String,\n} from \"./core_utils.js\";\nimport {\n createDefaultAppearance,\n FakeUnicodeFont,\n getPdfColor,\n parseDefaultAppearance,\n} from \"./default_appearance.js\";\nimport { Dict, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { writeDict, writeObject } from \"./writer.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { Catalog } from \"./catalog.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { ObjectLoader } from \"./object_loader.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { StringStream } from \"./stream.js\";\nimport { XFAFactory } from \"./xfa/factory.js\";\n\nclass AnnotationFactory {\n /**\n * Create an `Annotation` object of the correct type for the given reference\n * to an annotation dictionary. This yields a promise that is resolved when\n * the `Annotation` object is constructed.\n *\n * @param {XRef} xref\n * @param {Object} ref\n * @param {PDFManager} pdfManager\n * @param {Object} idFactory\n * @param {boolean} collectFields\n * @returns {Promise} A promise that is resolved with an {Annotation}\n * instance.\n */\n static create(xref, ref, pdfManager, idFactory, collectFields) {\n return Promise.all([\n pdfManager.ensureCatalog(\"acroForm\"),\n // Only necessary to prevent the `pdfManager.docBaseUrl`-getter, used\n // with certain Annotations, from throwing and thus breaking parsing:\n pdfManager.ensureCatalog(\"baseUrl\"),\n // Only necessary in the `Catalog.parseDestDictionary`-method,\n // when parsing \"GoToE\" actions:\n pdfManager.ensureCatalog(\"attachments\"),\n pdfManager.ensureDoc(\"xfaDatasets\"),\n collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1,\n ]).then(([acroForm, baseUrl, attachments, xfaDatasets, pageIndex]) =>\n pdfManager.ensure(this, \"_create\", [\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n attachments,\n xfaDatasets,\n collectFields,\n pageIndex,\n ])\n );\n }\n\n /**\n * @private\n */\n static _create(\n xref,\n ref,\n pdfManager,\n idFactory,\n acroForm,\n attachments = null,\n xfaDatasets,\n collectFields,\n pageIndex = -1\n ) {\n const dict = xref.fetchIfRef(ref);\n if (!(dict instanceof Dict)) {\n return undefined;\n }\n\n const id =\n ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n\n // Determine the annotation's subtype.\n let subtype = dict.get(\"Subtype\");\n subtype = subtype instanceof Name ? subtype.name : null;\n\n const acroFormDict = acroForm instanceof Dict ? acroForm : Dict.empty;\n\n // Return the right annotation object based on the subtype and field type.\n const parameters = {\n xref,\n ref,\n dict,\n subtype,\n id,\n pdfManager,\n acroForm: acroFormDict,\n attachments,\n xfaDatasets,\n collectFields,\n needAppearances:\n !collectFields && acroFormDict.get(\"NeedAppearances\") === true,\n pageIndex,\n isOffscreenCanvasSupported:\n FeatureTest.isOffscreenCanvasSupported &&\n pdfManager.evaluatorOptions.isOffscreenCanvasSupported,\n };\n\n switch (subtype) {\n case \"Link\":\n return new LinkAnnotation(parameters);\n\n case \"Text\":\n return new TextAnnotation(parameters);\n\n case \"Widget\":\n let fieldType = getInheritableProperty({ dict, key: \"FT\" });\n fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotation(parameters);\n case \"Btn\":\n return new ButtonWidgetAnnotation(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotation(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotation(parameters);\n }\n warn(\n `Unimplemented widget field type \"${fieldType}\", ` +\n \"falling back to base field type.\"\n );\n return new WidgetAnnotation(parameters);\n\n case \"Popup\":\n return new PopupAnnotation(parameters);\n\n case \"FreeText\":\n return new FreeTextAnnotation(parameters);\n\n case \"Line\":\n return new LineAnnotation(parameters);\n\n case \"Square\":\n return new SquareAnnotation(parameters);\n\n case \"Circle\":\n return new CircleAnnotation(parameters);\n\n case \"PolyLine\":\n return new PolylineAnnotation(parameters);\n\n case \"Polygon\":\n return new PolygonAnnotation(parameters);\n\n case \"Caret\":\n return new CaretAnnotation(parameters);\n\n case \"Ink\":\n return new InkAnnotation(parameters);\n\n case \"Highlight\":\n return new HighlightAnnotation(parameters);\n\n case \"Underline\":\n return new UnderlineAnnotation(parameters);\n\n case \"Squiggly\":\n return new SquigglyAnnotation(parameters);\n\n case \"StrikeOut\":\n return new StrikeOutAnnotation(parameters);\n\n case \"Stamp\":\n return new StampAnnotation(parameters);\n\n case \"FileAttachment\":\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!collectFields) {\n if (!subtype) {\n warn(\"Annotation is missing the required /Subtype.\");\n } else {\n warn(\n `Unimplemented annotation type \"${subtype}\", ` +\n \"falling back to base annotation.\"\n );\n }\n }\n return new Annotation(parameters);\n }\n }\n\n static async _getPageIndex(xref, ref, pdfManager) {\n try {\n const annotDict = await xref.fetchIfRefAsync(ref);\n if (!(annotDict instanceof Dict)) {\n return -1;\n }\n const pageRef = annotDict.getRaw(\"P\");\n if (!(pageRef instanceof Ref)) {\n return -1;\n }\n const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [\n pageRef,\n ]);\n return pageIndex;\n } catch (ex) {\n warn(`_getPageIndex: \"${ex}\".`);\n return -1;\n }\n }\n\n static async saveNewAnnotations(evaluator, task, annotations) {\n const xref = evaluator.xref;\n let baseFontRef;\n const dependencies = [];\n const promises = [];\n\n for (const annotation of annotations) {\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n if (!baseFontRef) {\n const baseFont = new Dict(xref);\n baseFont.set(\"BaseFont\", Name.get(\"Helvetica\"));\n baseFont.set(\"Type\", Name.get(\"Font\"));\n baseFont.set(\"Subtype\", Name.get(\"Type1\"));\n baseFont.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n const buffer = [];\n baseFontRef = xref.getNewTemporaryRef();\n writeObject(baseFontRef, baseFont, buffer, null);\n dependencies.push({ ref: baseFontRef, data: buffer.join(\"\") });\n }\n promises.push(\n FreeTextAnnotation.createNewAnnotation(\n xref,\n annotation,\n dependencies,\n { evaluator, task, baseFontRef }\n )\n );\n break;\n case AnnotationEditorType.INK:\n promises.push(\n InkAnnotation.createNewAnnotation(xref, annotation, dependencies)\n );\n }\n }\n\n return {\n annotations: await Promise.all(promises),\n dependencies,\n };\n }\n\n static async printNewAnnotations(evaluator, task, annotations) {\n if (!annotations) {\n return null;\n }\n\n const xref = evaluator.xref;\n const promises = [];\n const isOffscreenCanvasSupported =\n FeatureTest.isOffscreenCanvasSupported &&\n evaluator.options.isOffscreenCanvasSupported;\n for (const annotation of annotations) {\n switch (annotation.annotationType) {\n case AnnotationEditorType.FREETEXT:\n promises.push(\n FreeTextAnnotation.createNewPrintAnnotation(xref, annotation, {\n evaluator,\n task,\n isOffscreenCanvasSupported,\n })\n );\n break;\n case AnnotationEditorType.INK:\n promises.push(\n InkAnnotation.createNewPrintAnnotation(xref, annotation, {\n isOffscreenCanvasSupported,\n })\n );\n break;\n }\n }\n\n return Promise.all(promises);\n }\n}\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n if (!Array.isArray(color)) {\n return defaultColor;\n }\n\n const rgbColor = defaultColor || new Uint8ClampedArray(3);\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n return null;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n return rgbColor;\n\n default:\n return defaultColor;\n }\n}\n\nfunction getPdfColorArray(color) {\n return Array.from(color, c => c / 255);\n}\n\nfunction getQuadPoints(dict, rect) {\n // The region is described as a number of quadrilaterals.\n // Each quadrilateral must consist of eight coordinates.\n const quadPoints = dict.getArray(\"QuadPoints\");\n if (\n !Array.isArray(quadPoints) ||\n quadPoints.length === 0 ||\n quadPoints.length % 8 > 0\n ) {\n return null;\n }\n\n const quadPointsLists = [];\n for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n // Each series of eight numbers represents the coordinates for one\n // quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\n // Convert this to an array of objects with x and y coordinates.\n let minX = Infinity,\n maxX = -Infinity,\n minY = Infinity,\n maxY = -Infinity;\n for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n const x = quadPoints[j];\n const y = quadPoints[j + 1];\n\n minX = Math.min(x, minX);\n maxX = Math.max(x, maxX);\n minY = Math.min(y, minY);\n maxY = Math.max(y, maxY);\n }\n // The quadpoints should be ignored if any coordinate in the array\n // lies outside the region specified by the rectangle. The rectangle\n // can be `null` for markup annotations since their rectangle may be\n // incorrect (fixes bug 1538111).\n if (\n rect !== null &&\n (minX < rect[0] || maxX > rect[2] || minY < rect[1] || maxY > rect[3])\n ) {\n return null;\n }\n // The PDF specification states in section 12.5.6.10 (figure 64) that the\n // order of the quadpoints should be bottom left, bottom right, top right\n // and top left. However, in practice PDF files use a different order,\n // namely bottom left, bottom right, top left and top right (this is also\n // mentioned on https://github.com/highkite/pdfAnnotate#QuadPoints), so\n // this is the actual order we should work with. However, the situation is\n // even worse since Adobe's own applications and other applications violate\n // the specification and create annotations with other orders, namely top\n // left, top right, bottom left and bottom right or even top left,\n // top right, bottom right and bottom left. To avoid inconsistency and\n // broken rendering, we normalize all lists to put the quadpoints in the\n // same standard order (see https://stackoverflow.com/a/10729881).\n quadPointsLists.push([\n { x: minX, y: maxY },\n { x: maxX, y: maxY },\n { x: minX, y: minY },\n { x: maxX, y: minY },\n ]);\n }\n return quadPointsLists;\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n // 12.5.5: Algorithm: Appearance streams\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n bbox,\n matrix\n );\n if (minX === maxX || minY === maxY) {\n // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n // just apply the transform for rect\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [\n xRatio,\n 0,\n 0,\n yRatio,\n rect[0] - minX * xRatio,\n rect[1] - minY * yRatio,\n ];\n}\n\nclass Annotation {\n constructor(params) {\n const { dict, xref } = params;\n\n this.setTitle(dict.get(\"T\"));\n this.setContents(dict.get(\"Contents\"));\n this.setModificationDate(dict.get(\"M\"));\n this.setFlags(dict.get(\"F\"));\n this.setRectangle(dict.getArray(\"Rect\"));\n this.setColor(dict.getArray(\"C\"));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n this.setOptionalContent(dict);\n\n const MK = dict.get(\"MK\");\n this.setBorderAndBackgroundColors(MK);\n this.setRotation(MK);\n\n this._streams = [];\n if (this.appearance) {\n this._streams.push(this.appearance);\n }\n\n // Expose public properties using a data object.\n this.data = {\n annotationFlags: this.flags,\n borderStyle: this.borderStyle,\n color: this.color,\n backgroundColor: this.backgroundColor,\n borderColor: this.borderColor,\n rotation: this.rotation,\n contentsObj: this._contents,\n hasAppearance: !!this.appearance,\n id: params.id,\n modificationDate: this.modificationDate,\n rect: this.rectangle,\n subtype: params.subtype,\n hasOwnCanvas: false,\n };\n\n if (params.collectFields) {\n // Fields can act as container for other fields and have\n // some actions even if no Annotation inherit from them.\n // Those fields can be referenced by CO (calculation order).\n const kids = dict.get(\"Kids\");\n if (Array.isArray(kids)) {\n const kidIds = [];\n for (const kid of kids) {\n if (kid instanceof Ref) {\n kidIds.push(kid.toString());\n }\n }\n if (kidIds.length !== 0) {\n this.data.kidIds = kidIds;\n }\n }\n\n this.data.actions = collectActions(xref, dict, AnnotationActionEventType);\n this.data.fieldName = this._constructFieldName(dict);\n this.data.pageIndex = params.pageIndex;\n }\n\n this._isOffscreenCanvasSupported = params.isOffscreenCanvasSupported;\n this._fallbackFontDict = null;\n this._needAppearances = false;\n }\n\n /**\n * @private\n */\n _hasFlag(flags, flag) {\n return !!(flags & flag);\n }\n\n /**\n * @private\n */\n _isViewable(flags) {\n return (\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.NOVIEW)\n );\n }\n\n /**\n * @private\n */\n _isPrintable(flags) {\n return (\n this._hasFlag(flags, AnnotationFlag.PRINT) &&\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\n );\n }\n\n /**\n * Check if the annotation must be displayed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBeViewed(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.hidden !== undefined) {\n return !storageEntry.hidden;\n }\n return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Check if the annotation must be printed by taking into account\n * the value found in the annotationStorage which may have been set\n * through JS.\n *\n * @public\n * @memberof Annotation\n * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\n */\n mustBePrinted(annotationStorage) {\n const storageEntry =\n annotationStorage && annotationStorage.get(this.data.id);\n if (storageEntry && storageEntry.print !== undefined) {\n return storageEntry.print;\n }\n return this.printable;\n }\n\n /**\n * @type {boolean}\n */\n get viewable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n }\n\n /**\n * @type {boolean}\n */\n get printable() {\n if (this.data.quadPoints === null) {\n return false;\n }\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n }\n\n /**\n * @private\n */\n _parseStringHelper(data) {\n const str = typeof data === \"string\" ? stringToPDFString(data) : \"\";\n const dir = str && bidi(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n\n return { str, dir };\n }\n\n setDefaultAppearance(params) {\n const defaultAppearance =\n getInheritableProperty({ dict: params.dict, key: \"DA\" }) ||\n params.acroForm.get(\"DA\");\n this._defaultAppearance =\n typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n this.data.defaultAppearanceData = parseDefaultAppearance(\n this._defaultAppearance\n );\n }\n\n /**\n * Set the title.\n *\n * @param {string} title - The title of the annotation, used e.g. with\n * PopupAnnotations.\n */\n setTitle(title) {\n this._title = this._parseStringHelper(title);\n }\n\n /**\n * Set the contents.\n *\n * @param {string} contents - Text to display for the annotation or, if the\n * type of annotation does not display text, a\n * description of the annotation's contents\n */\n setContents(contents) {\n this._contents = this._parseStringHelper(contents);\n }\n\n /**\n * Set the modification date.\n *\n * @public\n * @memberof Annotation\n * @param {string} modificationDate - PDF date string that indicates when the\n * annotation was last modified\n */\n setModificationDate(modificationDate) {\n this.modificationDate =\n typeof modificationDate === \"string\" ? modificationDate : null;\n }\n\n /**\n * Set the flags.\n *\n * @public\n * @memberof Annotation\n * @param {number} flags - Unsigned 32-bit integer specifying annotation\n * characteristics\n * @see {@link shared/util.js}\n */\n setFlags(flags) {\n this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n }\n\n /**\n * Check if a provided flag is set.\n *\n * @public\n * @memberof Annotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n }\n\n /**\n * Set the rectangle.\n *\n * @public\n * @memberof Annotation\n * @param {Array} rectangle - The rectangle array with exactly four entries\n */\n setRectangle(rectangle) {\n if (Array.isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n }\n\n /**\n * Set the color and take care of color space conversion.\n * The default value is black, in RGB color space.\n *\n * @public\n * @memberof Annotation\n * @param {Array} color - The color array containing either 0\n * (transparent), 1 (grayscale), 3 (RGB) or\n * 4 (CMYK) elements\n */\n setColor(color) {\n this.color = getRgbColor(color);\n }\n\n /**\n * Set the line endings; should only be used with specific annotation types.\n * @param {Array} lineEndings - The line endings array.\n */\n setLineEndings(lineEndings) {\n this.lineEndings = [\"None\", \"None\"]; // The default values.\n\n if (Array.isArray(lineEndings) && lineEndings.length === 2) {\n for (let i = 0; i < 2; i++) {\n const obj = lineEndings[i];\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"None\":\n continue;\n case \"Square\":\n case \"Circle\":\n case \"Diamond\":\n case \"OpenArrow\":\n case \"ClosedArrow\":\n case \"Butt\":\n case \"ROpenArrow\":\n case \"RClosedArrow\":\n case \"Slash\":\n this.lineEndings[i] = obj.name;\n continue;\n }\n }\n warn(`Ignoring invalid lineEnding: ${obj}`);\n }\n }\n }\n\n setRotation(mk) {\n this.rotation = 0;\n if (mk instanceof Dict) {\n let angle = mk.get(\"R\") || 0;\n if (Number.isInteger(angle) && angle !== 0) {\n angle %= 360;\n if (angle < 0) {\n angle += 360;\n }\n if (angle % 90 === 0) {\n this.rotation = angle;\n }\n }\n }\n }\n\n /**\n * Set the color for background and border if any.\n * The default values are transparent.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} mk - The MK dictionary\n */\n setBorderAndBackgroundColors(mk) {\n if (mk instanceof Dict) {\n this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n } else {\n this.borderColor = this.backgroundColor = null;\n }\n }\n\n /**\n * Set the border style (as AnnotationBorderStyle object).\n *\n * @public\n * @memberof Annotation\n * @param {Dict} borderStyle - The border style dictionary\n */\n setBorderStyle(borderStyle) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.rectangle, \"setRectangle must have been called previously.\");\n }\n\n this.borderStyle = new AnnotationBorderStyle();\n if (!(borderStyle instanceof Dict)) {\n return;\n }\n if (borderStyle.has(\"BS\")) {\n const dict = borderStyle.get(\"BS\");\n const dictType = dict.get(\"Type\");\n\n if (!dictType || isName(dictType, \"Border\")) {\n this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n this.borderStyle.setStyle(dict.get(\"S\"));\n this.borderStyle.setDashArray(dict.getArray(\"D\"));\n }\n } else if (borderStyle.has(\"Border\")) {\n const array = borderStyle.getArray(\"Border\");\n if (Array.isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2], this.rectangle);\n\n if (array.length === 4) {\n // Dash array available\n this.borderStyle.setDashArray(array[3], /* forceStyle = */ true);\n }\n }\n } else {\n // There are no border entries in the dictionary. According to the\n // specification, we should draw a solid border of width 1 in that\n // case, but Adobe Reader did not implement that part of the\n // specification and instead draws no border at all, so we do the same.\n // See also https://github.com/mozilla/pdf.js/issues/6179.\n this.borderStyle.setWidth(0);\n }\n }\n\n /**\n * Set the (normal) appearance.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n setAppearance(dict) {\n this.appearance = null;\n\n const appearanceStates = dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a stream, then it is used directly.\n const normalAppearanceState = appearanceStates.get(\"N\");\n if (normalAppearanceState instanceof BaseStream) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!(normalAppearanceState instanceof Dict)) {\n return;\n }\n\n // In case the normal appearance is a dictionary, the `AS` entry provides\n // the key of the stream in this dictionary.\n const as = dict.get(\"AS\");\n if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\n return;\n }\n const appearance = normalAppearanceState.get(as.name);\n if (appearance instanceof BaseStream) {\n this.appearance = appearance;\n }\n }\n\n setOptionalContent(dict) {\n this.oc = null;\n\n const oc = dict.get(\"OC\");\n if (oc instanceof Name) {\n warn(\"setOptionalContent: Support for /Name-entry is not implemented.\");\n } else if (oc instanceof Dict) {\n this.oc = oc;\n }\n }\n\n loadResources(keys, appearance) {\n return appearance.dict.getAsync(\"Resources\").then(resources => {\n if (!resources) {\n return undefined;\n }\n\n const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n return objectLoader.load().then(function () {\n return resources;\n });\n });\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n const data = this.data;\n let appearance = this.appearance;\n const isUsingOwnCanvas = !!(\n this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY\n );\n if (!appearance) {\n if (!isUsingOwnCanvas) {\n return {\n opList: new OperatorList(),\n separateForm: false,\n separateCanvas: false,\n };\n }\n appearance = new StringStream(\"\");\n appearance.dict = new Dict();\n }\n\n const appearanceDict = appearance.dict;\n const resources = await this.loadResources(\n [\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"],\n appearance\n );\n const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n const transform = getTransformMatrix(data.rect, bbox, matrix);\n\n const opList = new OperatorList();\n\n let optionalContent;\n if (this.oc) {\n optionalContent = await evaluator.parseMarkedContentProps(\n this.oc,\n /* resources = */ null\n );\n }\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n opList.addOp(OPS.beginAnnotation, [\n data.id,\n data.rect,\n transform,\n matrix,\n isUsingOwnCanvas,\n ]);\n\n await evaluator.getOperatorList({\n stream: appearance,\n task,\n resources,\n operatorList: opList,\n fallbackFontDict: this._fallbackFontDict,\n });\n opList.addOp(OPS.endAnnotation, []);\n\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n this.reset();\n return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas };\n }\n\n async save(evaluator, task, annotationStorage) {\n return null;\n }\n\n get hasTextContent() {\n return false;\n }\n\n async extractTextContent(evaluator, task, viewBox) {\n if (!this.appearance) {\n return;\n }\n\n const resources = await this.loadResources(\n [\"ExtGState\", \"Font\", \"Properties\", \"XObject\"],\n this.appearance\n );\n\n const text = [];\n const buffer = [];\n const sink = {\n desiredSize: Math.Infinity,\n ready: true,\n\n enqueue(chunk, size) {\n for (const item of chunk.items) {\n buffer.push(item.str);\n if (item.hasEOL) {\n text.push(buffer.join(\"\"));\n buffer.length = 0;\n }\n }\n },\n };\n\n await evaluator.getTextContent({\n stream: this.appearance,\n task,\n resources,\n includeMarkedContent: true,\n combineTextItems: true,\n sink,\n viewBox,\n });\n this.reset();\n\n if (buffer.length) {\n text.push(buffer.join(\"\"));\n }\n\n if (text.length > 0) {\n this.data.textContent = text;\n }\n }\n\n /**\n * Get field data for usage in JS sandbox.\n *\n * Field object is defined here:\n * https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf#page=16\n *\n * @public\n * @memberof Annotation\n * @returns {Object | null}\n */\n getFieldObject() {\n if (this.data.kidIds) {\n return {\n id: this.data.id,\n actions: this.data.actions,\n name: this.data.fieldName,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n type: \"\",\n kidIds: this.data.kidIds,\n page: this.data.pageIndex,\n rotation: this.rotation,\n };\n }\n return null;\n }\n\n /**\n * Reset the annotation.\n *\n * This involves resetting the various streams that are either cached on the\n * annotation instance or created during its construction.\n *\n * @public\n * @memberof Annotation\n */\n reset() {\n if (\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")) &&\n this.appearance &&\n !this._streams.includes(this.appearance)\n ) {\n unreachable(\"The appearance stream should always be reset.\");\n }\n\n for (const stream of this._streams) {\n stream.reset();\n }\n }\n\n /**\n * Construct the (fully qualified) field name from the (partial) field\n * names of the field and its ancestors.\n *\n * @private\n * @memberof Annotation\n * @param {Dict} dict - Complete widget annotation dictionary\n * @returns {string}\n */\n _constructFieldName(dict) {\n // Both the `Parent` and `T` fields are optional. While at least one of\n // them should be provided, bad PDF generators may fail to do so.\n if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n warn(\"Unknown field name, falling back to empty field name.\");\n return \"\";\n }\n\n // If no parent exists, the partial and fully qualified names are equal.\n if (!dict.has(\"Parent\")) {\n return stringToPDFString(dict.get(\"T\"));\n }\n\n // Form the fully qualified field name by appending the partial name to\n // the parent's fully qualified name, separated by a period.\n const fieldName = [];\n if (dict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(dict.get(\"T\")));\n }\n\n let loopDict = dict;\n const visited = new RefSet();\n if (dict.objId) {\n visited.put(dict.objId);\n }\n while (loopDict.has(\"Parent\")) {\n loopDict = loopDict.get(\"Parent\");\n if (\n !(loopDict instanceof Dict) ||\n (loopDict.objId && visited.has(loopDict.objId))\n ) {\n // Even though it is not allowed according to the PDF specification,\n // bad PDF generators may provide a `Parent` entry that is not a\n // dictionary, but `null` for example (issue 8143).\n //\n // If parent has been already visited, it means that we're\n // in an infinite loop.\n break;\n }\n if (loopDict.objId) {\n visited.put(loopDict.objId);\n }\n\n if (loopDict.has(\"T\")) {\n fieldName.unshift(stringToPDFString(loopDict.get(\"T\")));\n }\n }\n return fieldName.join(\".\");\n }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n constructor() {\n this.width = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n /**\n * Set the width.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} width - The width.\n * @param {Array} rect - The annotation `Rect` entry.\n */\n setWidth(width, rect = [0, 0, 0, 0]) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Array.isArray(rect) && rect.length === 4,\n \"A valid `rect` parameter must be provided.\"\n );\n }\n\n // Some corrupt PDF generators may provide the width as a `Name`,\n // rather than as a number (fixes issue 10385).\n if (width instanceof Name) {\n this.width = 0; // This is consistent with the behaviour in Adobe Reader.\n return;\n }\n if (typeof width === \"number\") {\n if (width > 0) {\n const maxWidth = (rect[2] - rect[0]) / 2;\n const maxHeight = (rect[3] - rect[1]) / 2;\n\n // Ignore large `width`s, since they lead to the Annotation overflowing\n // the size set by the `Rect` entry thus causing the `annotationLayer`\n // to render it over the surrounding document (fixes bug1552113.pdf).\n if (\n maxWidth > 0 &&\n maxHeight > 0 &&\n (width > maxWidth || width > maxHeight)\n ) {\n warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n width = 1;\n }\n }\n this.width = width;\n }\n }\n\n /**\n * Set the style.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Name} style - The annotation style.\n * @see {@link shared/util.js}\n */\n setStyle(style) {\n if (!(style instanceof Name)) {\n return;\n }\n switch (style.name) {\n case \"S\":\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n\n case \"D\":\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n\n case \"B\":\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n\n case \"I\":\n this.style = AnnotationBorderStyleType.INSET;\n break;\n\n case \"U\":\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Set the dash array.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Array} dashArray - The dash array with at least one element\n * @param {boolean} [forceStyle]\n */\n setDashArray(dashArray, forceStyle = false) {\n // We validate the dash array, but we do not use it because CSS does not\n // allow us to change spacing of dashes. For more information, visit\n // http://www.w3.org/TR/css3-background/#the-border-style.\n if (Array.isArray(dashArray) && dashArray.length > 0) {\n // According to the PDF specification: the elements in `dashArray`\n // shall be numbers that are nonnegative and not all equal to zero.\n let isValid = true;\n let allZeros = true;\n for (const element of dashArray) {\n const validNumber = +element >= 0;\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n\n if (forceStyle) {\n // Even though we cannot use the dash array in the display layer,\n // at least ensure that we use the correct border-style.\n this.setStyle(Name.get(\"D\"));\n }\n } else {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n } else if (dashArray) {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n }\n\n /**\n * Set the horizontal corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The horizontal corner radius.\n */\n setHorizontalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.horizontalCornerRadius = radius;\n }\n }\n\n /**\n * Set the vertical corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {number} radius - The vertical corner radius.\n */\n setVerticalCornerRadius(radius) {\n if (Number.isInteger(radius)) {\n this.verticalCornerRadius = radius;\n }\n }\n}\n\nclass MarkupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const { dict } = params;\n\n if (dict.has(\"IRT\")) {\n const rawIRT = dict.getRaw(\"IRT\");\n this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\n\n const rt = dict.get(\"RT\");\n this.data.replyType =\n rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\n }\n\n if (this.data.replyType === AnnotationReplyType.GROUP) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n const parent = dict.get(\"IRT\");\n\n this.setTitle(parent.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parent.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (!parent.has(\"CreationDate\")) {\n this.data.creationDate = null;\n } else {\n this.setCreationDate(parent.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n }\n\n if (!parent.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parent.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n this.data.hasPopup = parent.has(\"Popup\");\n\n if (!parent.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parent.getArray(\"C\"));\n this.data.color = this.color;\n }\n } else {\n this.data.titleObj = this._title;\n\n this.setCreationDate(dict.get(\"CreationDate\"));\n this.data.creationDate = this.creationDate;\n\n this.data.hasPopup = dict.has(\"Popup\");\n\n if (!dict.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n }\n }\n\n if (dict.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n }\n }\n\n /**\n * Set the creation date.\n *\n * @public\n * @memberof MarkupAnnotation\n * @param {string} creationDate - PDF date string that indicates when the\n * annotation was originally created\n */\n setCreationDate(creationDate) {\n this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n }\n\n _setDefaultAppearance({\n xref,\n extra,\n strokeColor,\n fillColor,\n blendMode,\n strokeAlpha,\n fillAlpha,\n pointsCallback,\n }) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = Number.MIN_VALUE;\n let maxY = Number.MIN_VALUE;\n\n const buffer = [\"q\"];\n if (extra) {\n buffer.push(extra);\n }\n if (strokeColor) {\n buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n }\n if (fillColor) {\n buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n }\n\n let pointsArray = this.data.quadPoints;\n if (!pointsArray) {\n // If there are no quadpoints, the rectangle should be used instead.\n // Convert the rectangle definition to a points array similar to how the\n // quadpoints are defined.\n pointsArray = [\n [\n { x: this.rectangle[0], y: this.rectangle[3] },\n { x: this.rectangle[2], y: this.rectangle[3] },\n { x: this.rectangle[0], y: this.rectangle[1] },\n { x: this.rectangle[2], y: this.rectangle[1] },\n ],\n ];\n }\n\n for (const points of pointsArray) {\n const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n minX = Math.min(minX, mX);\n maxX = Math.max(maxX, MX);\n minY = Math.min(minY, mY);\n maxY = Math.max(maxY, MY);\n }\n buffer.push(\"Q\");\n\n const formDict = new Dict(xref);\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n\n const appearanceStream = new StringStream(buffer.join(\" \"));\n appearanceStream.dict = appearanceStreamDict;\n formDict.set(\"Fm0\", appearanceStream);\n\n const gsDict = new Dict(xref);\n if (blendMode) {\n gsDict.set(\"BM\", Name.get(blendMode));\n }\n if (typeof strokeAlpha === \"number\") {\n gsDict.set(\"CA\", strokeAlpha);\n }\n if (typeof fillAlpha === \"number\") {\n gsDict.set(\"ca\", fillAlpha);\n }\n\n const stateDict = new Dict(xref);\n stateDict.set(\"GS0\", gsDict);\n\n const resources = new Dict(xref);\n resources.set(\"ExtGState\", stateDict);\n resources.set(\"XObject\", formDict);\n\n const appearanceDict = new Dict(xref);\n appearanceDict.set(\"Resources\", resources);\n const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\n appearanceDict.set(\"BBox\", bbox);\n\n this.appearance = new StringStream(\"/GS0 gs /Fm0 Do\");\n this.appearance.dict = appearanceDict;\n\n // This method is only called if there is no appearance for the annotation,\n // so `this.appearance` is not pushed yet in the `Annotation` constructor.\n this._streams.push(this.appearance, appearanceStream);\n }\n\n static async createNewAnnotation(xref, annotation, dependencies, params) {\n const annotationRef = xref.getNewTemporaryRef();\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n const buffer = [];\n let annotationDict;\n\n if (ap) {\n const apRef = xref.getNewTemporaryRef();\n annotationDict = this.createNewDict(annotation, xref, { apRef });\n const transform = xref.encrypt\n ? xref.encrypt.createCipherTransform(apRef.num, apRef.gen)\n : null;\n writeObject(apRef, ap, buffer, transform);\n dependencies.push({ ref: apRef, data: buffer.join(\"\") });\n } else {\n annotationDict = this.createNewDict(annotation, xref, {});\n }\n\n buffer.length = 0;\n const transform = xref.encrypt\n ? xref.encrypt.createCipherTransform(annotationRef.num, annotationRef.gen)\n : null;\n writeObject(annotationRef, annotationDict, buffer, transform);\n\n return { ref: annotationRef, data: buffer.join(\"\") };\n }\n\n static async createNewPrintAnnotation(xref, annotation, params) {\n const ap = await this.createNewAppearanceStream(annotation, xref, params);\n const annotationDict = this.createNewDict(annotation, xref, { ap });\n\n return new this.prototype.constructor({\n dict: annotationDict,\n xref,\n isOffscreenCanvasSupported: params.isOffscreenCanvasSupported,\n });\n }\n}\n\nclass WidgetAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n const data = this.data;\n this.ref = params.ref;\n this._needAppearances = params.needAppearances;\n\n data.annotationType = AnnotationType.WIDGET;\n if (data.fieldName === undefined) {\n data.fieldName = this._constructFieldName(dict);\n }\n if (data.actions === undefined) {\n data.actions = collectActions(xref, dict, AnnotationActionEventType);\n }\n\n let fieldValue = getInheritableProperty({\n dict,\n key: \"V\",\n getArray: true,\n });\n data.fieldValue = this._decodeFormValue(fieldValue);\n\n const defaultFieldValue = getInheritableProperty({\n dict,\n key: \"DV\",\n getArray: true,\n });\n data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n if (fieldValue === undefined && params.xfaDatasets) {\n // Try to figure out if we have something in the xfa dataset.\n const path = this._title.str;\n if (path) {\n this._hasValueFromXFA = true;\n data.fieldValue = fieldValue = params.xfaDatasets.getValue(path);\n }\n }\n\n // When no \"V\" entry exists, let the fieldValue fallback to the \"DV\" entry\n // (fixes issue13823.pdf).\n if (fieldValue === undefined && data.defaultFieldValue !== null) {\n data.fieldValue = data.defaultFieldValue;\n }\n\n data.alternativeText = stringToPDFString(dict.get(\"TU\") || \"\");\n\n this.setDefaultAppearance(params);\n\n data.hasAppearance =\n (this._needAppearances &&\n data.fieldValue !== undefined &&\n data.fieldValue !== null) ||\n data.hasAppearance;\n\n const fieldType = getInheritableProperty({ dict, key: \"FT\" });\n data.fieldType = fieldType instanceof Name ? fieldType.name : null;\n\n const localResources = getInheritableProperty({ dict, key: \"DR\" });\n const acroFormResources = params.acroForm.get(\"DR\");\n const appearanceResources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n this._fieldResources = {\n localResources,\n acroFormResources,\n appearanceResources,\n mergedResources: Dict.merge({\n xref,\n dictArray: [localResources, appearanceResources, acroFormResources],\n mergeSubDicts: true,\n }),\n };\n\n data.fieldFlags = getInheritableProperty({ dict, key: \"Ff\" });\n if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\n data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN);\n }\n\n /**\n * Decode the given form value.\n *\n * @private\n * @memberof WidgetAnnotation\n * @param {Array<string>|Name|string} formValue - The (possibly encoded)\n * form value.\n * @returns {Array<string>|string|null}\n */\n _decodeFormValue(formValue) {\n if (Array.isArray(formValue)) {\n return formValue\n .filter(item => typeof item === \"string\")\n .map(item => stringToPDFString(item));\n } else if (formValue instanceof Name) {\n return stringToPDFString(formValue.name);\n } else if (typeof formValue === \"string\") {\n return stringToPDFString(formValue);\n }\n return null;\n }\n\n /**\n * Check if a provided field flag is set.\n *\n * @public\n * @memberof WidgetAnnotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * field characteristic\n * @returns {boolean}\n * @see {@link shared/util.js}\n */\n hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n }\n\n getRotationMatrix(annotationStorage) {\n const storageEntry = annotationStorage\n ? annotationStorage.get(this.data.id)\n : undefined;\n let rotation = storageEntry && storageEntry.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n\n if (rotation === 0) {\n return IDENTITY_MATRIX;\n }\n\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n\n return getRotationMatrix(rotation, width, height);\n }\n\n getBorderAndBackgroundAppearances(annotationStorage) {\n const storageEntry = annotationStorage\n ? annotationStorage.get(this.data.id)\n : undefined;\n let rotation = storageEntry && storageEntry.rotation;\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n\n if (!this.backgroundColor && !this.borderColor) {\n return \"\";\n }\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const rect =\n rotation === 0 || rotation === 180\n ? `0 0 ${width} ${height} re`\n : `0 0 ${height} ${width} re`;\n\n let str = \"\";\n if (this.backgroundColor) {\n str = `${getPdfColor(\n this.backgroundColor,\n /* isFill */ true\n )} ${rect} f `;\n }\n\n if (this.borderColor) {\n const borderWidth = this.borderStyle.width || 1;\n str += `${borderWidth} w ${getPdfColor(\n this.borderColor,\n /* isFill */ false\n )} ${rect} S `;\n }\n\n return str;\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n return {\n opList: new OperatorList(),\n separateForm: true,\n separateCanvas: false,\n };\n }\n\n if (!this._hasText) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n const content = await this._getAppearance(\n evaluator,\n task,\n intent,\n annotationStorage\n );\n if (this.appearance && content === null) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n const opList = new OperatorList();\n\n // Even if there is an appearance stream, ignore it. This is the\n // behaviour used by Adobe Reader.\n if (!this._defaultAppearance || content === null) {\n return { opList, separateForm: false, separateCanvas: false };\n }\n\n const matrix = [1, 0, 0, 1, 0, 0];\n const bbox = [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ];\n const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n\n let optionalContent;\n if (this.oc) {\n optionalContent = await evaluator.parseMarkedContentProps(\n this.oc,\n /* resources = */ null\n );\n }\n if (optionalContent !== undefined) {\n opList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n opList.addOp(OPS.beginAnnotation, [\n this.data.id,\n this.data.rect,\n transform,\n this.getRotationMatrix(annotationStorage),\n /* isUsingOwnCanvas = */ false,\n ]);\n\n const stream = new StringStream(content);\n await evaluator.getOperatorList({\n stream,\n task,\n resources: this._fieldResources.mergedResources,\n operatorList: opList,\n });\n opList.addOp(OPS.endAnnotation, []);\n\n if (optionalContent !== undefined) {\n opList.addOp(OPS.endMarkedContent, []);\n }\n return { opList, separateForm: false, separateCanvas: false };\n }\n\n _getMKDict(rotation) {\n const mk = new Dict(null);\n if (rotation) {\n mk.set(\"R\", rotation);\n }\n if (this.borderColor) {\n mk.set(\"BC\", getPdfColorArray(this.borderColor));\n }\n if (this.backgroundColor) {\n mk.set(\"BG\", getPdfColorArray(this.backgroundColor));\n }\n return mk.size > 0 ? mk : null;\n }\n\n async save(evaluator, task, annotationStorage) {\n const storageEntry = annotationStorage\n ? annotationStorage.get(this.data.id)\n : undefined;\n let value = storageEntry && storageEntry.value;\n let rotation = storageEntry && storageEntry.rotation;\n if (value === this.data.fieldValue || value === undefined) {\n if (!this._hasValueFromXFA && rotation === undefined) {\n return null;\n }\n value = value || this.data.fieldValue;\n }\n\n // Value can be an array (with choice list and multiple selections)\n if (\n rotation === undefined &&\n !this._hasValueFromXFA &&\n Array.isArray(value) &&\n Array.isArray(this.data.fieldValue) &&\n value.length === this.data.fieldValue.length &&\n value.every((x, i) => x === this.data.fieldValue[i])\n ) {\n return null;\n }\n\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n\n let appearance = null;\n if (!this._needAppearances) {\n appearance = await this._getAppearance(\n evaluator,\n task,\n RenderingIntentFlag.SAVE,\n annotationStorage\n );\n if (appearance === null) {\n // Appearance didn't change.\n return null;\n }\n } else {\n // No need to create an appearance: the pdf has the flag /NeedAppearances\n // which means that it's up to the reader to produce an appearance.\n }\n\n let needAppearances = false;\n if (appearance && appearance.needAppearances) {\n needAppearances = true;\n appearance = null;\n }\n\n const { xref } = evaluator;\n\n const originalDict = xref.fetchIfRef(this.ref);\n if (!(originalDict instanceof Dict)) {\n return null;\n }\n\n const dict = new Dict(xref);\n for (const key of originalDict.getKeys()) {\n if (key !== \"AP\") {\n dict.set(key, originalDict.getRaw(key));\n }\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value,\n };\n\n const encoder = val => {\n return isAscii(val)\n ? val\n : stringToUTF16String(val, /* bigEndian = */ true);\n };\n dict.set(\"V\", Array.isArray(value) ? value.map(encoder) : encoder(value));\n\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n\n const encrypt = xref.encrypt;\n const originalTransform = encrypt\n ? encrypt.createCipherTransform(this.ref.num, this.ref.gen)\n : null;\n\n const buffer = [];\n const changes = [\n // data for the original object\n // V field changed + reference for new AP\n { ref: this.ref, data: \"\", xfa, needAppearances },\n ];\n if (appearance !== null) {\n const newRef = xref.getNewTemporaryRef();\n const AP = new Dict(xref);\n dict.set(\"AP\", AP);\n AP.set(\"N\", newRef);\n\n let newTransform = null;\n if (encrypt) {\n newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n appearance = newTransform.encryptString(appearance);\n }\n\n const resources = this._getSaveFieldResources(xref);\n const appearanceStream = new StringStream(appearance);\n const appearanceDict = (appearanceStream.dict = new Dict(xref));\n appearanceDict.set(\"Length\", appearance.length);\n appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceDict.set(\"Resources\", resources);\n appearanceDict.set(\"BBox\", [\n 0,\n 0,\n this.data.rect[2] - this.data.rect[0],\n this.data.rect[3] - this.data.rect[1],\n ]);\n\n const rotationMatrix = this.getRotationMatrix(annotationStorage);\n if (rotationMatrix !== IDENTITY_MATRIX) {\n // The matrix isn't the identity one.\n appearanceDict.set(\"Matrix\", rotationMatrix);\n }\n\n writeObject(newRef, appearanceStream, buffer, newTransform);\n\n changes.push(\n // data for the new AP\n {\n ref: newRef,\n data: buffer.join(\"\"),\n xfa: null,\n needAppearances: false,\n }\n );\n buffer.length = 0;\n }\n\n dict.set(\"M\", `D:${getModificationDate()}`);\n writeObject(this.ref, dict, buffer, originalTransform);\n\n changes[0].data = buffer.join(\"\");\n\n return changes;\n }\n\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n if (isPassword) {\n return null;\n }\n const storageEntry = annotationStorage\n ? annotationStorage.get(this.data.id)\n : undefined;\n\n let value, rotation;\n if (storageEntry) {\n value = storageEntry.formattedValue || storageEntry.value;\n rotation = storageEntry.rotation;\n }\n\n if (\n rotation === undefined &&\n value === undefined &&\n !this._needAppearances\n ) {\n if (!this._hasValueFromXFA || this.appearance) {\n // The annotation hasn't been rendered so use the appearance.\n return null;\n }\n }\n\n // Empty or it has a trailing whitespace.\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n\n if (value === undefined) {\n // The annotation has its value in XFA datasets but not in the V field.\n value = this.data.fieldValue;\n if (!value) {\n return `/Tx BMC q ${colors}Q EMC`;\n }\n }\n\n if (Array.isArray(value) && value.length === 1) {\n value = value[0];\n }\n\n assert(typeof value === \"string\", \"Expected `value` to be a string.\");\n\n if (!this.data.combo) {\n value = value.trim();\n } else {\n // The value is supposed to be one of the exportValue.\n const option =\n this.data.options.find(({ exportValue }) => value === exportValue) ||\n this.data.options[0];\n value = (option && option.displayValue) || \"\";\n }\n\n if (value === \"\") {\n // the field is empty: nothing to render\n return `/Tx BMC q ${colors}Q EMC`;\n }\n\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n\n let lineCount = -1;\n let lines;\n\n // We could have a text containing for example some sequences of chars and\n // their diacritics (e.g. \"é\".normalize(\"NFKD\") shows 1 char when it's 2).\n // Positioning diacritics is really something we don't want to do here.\n // So if a font has a glyph for a acute accent and one for \"e\" then we won't\n // get any encoding issues but we'll render \"e\" and then \"´\".\n // It's why we normalize the string. We use NFC to preserve the initial\n // string, (e.g. \"²\".normalize(\"NFC\") === \"²\"\n // but \"²\".normalize(\"NFKC\") === \"2\").\n //\n // TODO: it isn't a perfect solution, some chars like \"ẹ́\" will be\n // decomposed into two chars (\"ẹ\" and \"´\"), so we should detect such\n // situations and then use either FakeUnicodeFont or set the\n // /NeedAppearances flag.\n if (this.data.multiLine) {\n lines = value.split(/\\r\\n?|\\n/).map(line => line.normalize(\"NFC\"));\n lineCount = lines.length;\n } else {\n lines = [value.replace(/\\r\\n?|\\n/, \"\").normalize(\"NFC\")];\n }\n\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let totalHeight = this.data.rect[3] - this.data.rect[1];\n let totalWidth = this.data.rect[2] - this.data.rect[0];\n\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n let font = await WidgetAnnotation._getFontData(\n evaluator,\n task,\n this.data.defaultAppearanceData,\n this._fieldResources.mergedResources\n );\n\n let defaultAppearance, fontSize, lineHeight;\n const encodedLines = [];\n let encodingError = false;\n for (const line of lines) {\n const encodedString = font.encodeString(line);\n if (encodedString.length > 1) {\n encodingError = true;\n }\n encodedLines.push(encodedString.join(\"\"));\n }\n\n if (encodingError && intent & RenderingIntentFlag.SAVE) {\n // We don't have a way to render the field, so we just rely on the\n // /NeedAppearances trick to let the different sofware correctly render\n // this pdf.\n return { needAppearances: true };\n }\n\n // We check that the font is able to encode the string.\n if (encodingError && this._isOffscreenCanvasSupported) {\n // If it can't then we fallback on fake unicode font (mapped to sans-serif\n // for the rendering).\n // It means that a printed form can be rendered differently (it depends on\n // the sans-serif font) but at least we've something to render.\n // In an ideal world the associated font should correctly handle the\n // possible chars but a user can add a smiley or whatever.\n // We could try to embed a font but it means that we must have access\n // to the raw font file.\n const fontFamily = this.data.comb ? \"monospace\" : \"sans-serif\";\n const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily);\n const resources = fakeUnicodeFont.createFontResources(lines.join(\"\"));\n const newFont = resources.getRaw(\"Font\");\n\n if (this._fieldResources.mergedResources.has(\"Font\")) {\n const oldFont = this._fieldResources.mergedResources.get(\"Font\");\n for (const key of newFont.getKeys()) {\n oldFont.set(key, newFont.getRaw(key));\n }\n } else {\n this._fieldResources.mergedResources.set(\"Font\", newFont);\n }\n\n const fontName = fakeUnicodeFont.fontName.name;\n font = await WidgetAnnotation._getFontData(\n evaluator,\n task,\n { fontName, fontSize: 0 },\n resources\n );\n\n for (let i = 0, ii = encodedLines.length; i < ii; i++) {\n encodedLines[i] = stringToUTF16String(lines[i]);\n }\n\n const savedDefaultAppearance = Object.assign(\n Object.create(null),\n this.data.defaultAppearanceData\n );\n this.data.defaultAppearanceData.fontSize = 0;\n this.data.defaultAppearanceData.fontName = fontName;\n\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(\n totalHeight - 2 * defaultPadding,\n totalWidth - 2 * defaultHPadding,\n value,\n font,\n lineCount\n );\n\n this.data.defaultAppearanceData = savedDefaultAppearance;\n } else {\n if (!this._isOffscreenCanvasSupported) {\n warn(\n \"_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.\"\n );\n }\n\n [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(\n totalHeight - 2 * defaultPadding,\n totalWidth - 2 * defaultHPadding,\n value,\n font,\n lineCount\n );\n }\n\n let descent = font.descent;\n if (isNaN(descent)) {\n descent = BASELINE_FACTOR * lineHeight;\n } else {\n descent = Math.max(\n BASELINE_FACTOR * lineHeight,\n Math.abs(descent) * fontSize\n );\n }\n\n // Take into account the space we have to compute the default vertical\n // padding.\n const defaultVPadding = Math.min(\n Math.floor((totalHeight - fontSize) / 2),\n defaultPadding\n );\n const alignment = this.data.textAlignment;\n\n if (this.data.multiLine) {\n return this._getMultilineAppearance(\n defaultAppearance,\n encodedLines,\n font,\n fontSize,\n totalWidth,\n totalHeight,\n alignment,\n defaultHPadding,\n defaultVPadding,\n descent,\n lineHeight,\n annotationStorage\n );\n }\n\n if (this.data.comb) {\n return this._getCombAppearance(\n defaultAppearance,\n font,\n encodedLines[0],\n fontSize,\n totalWidth,\n totalHeight,\n defaultHPadding,\n defaultVPadding,\n descent,\n lineHeight,\n annotationStorage\n );\n }\n\n const bottomPadding = defaultVPadding + descent;\n if (alignment === 0 || alignment > 2) {\n // Left alignment: nothing to do\n return (\n `/Tx BMC q ${colors}BT ` +\n defaultAppearance +\n ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(\n bottomPadding\n )} Tm (${escapeString(encodedLines[0])}) Tj` +\n \" ET Q EMC\"\n );\n }\n\n const prevInfo = { shift: 0 };\n const renderedText = this._renderText(\n encodedLines[0],\n font,\n fontSize,\n totalWidth,\n alignment,\n prevInfo,\n defaultHPadding,\n bottomPadding\n );\n return (\n `/Tx BMC q ${colors}BT ` +\n defaultAppearance +\n ` 1 0 0 1 0 0 Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n static async _getFontData(evaluator, task, appearanceData, resources) {\n const operatorList = new OperatorList();\n const initialState = {\n font: null,\n clone() {\n return this;\n },\n };\n\n const { fontName, fontSize } = appearanceData;\n await evaluator.handleSetFont(\n resources,\n [fontName && Name.get(fontName), fontSize],\n /* fontRef = */ null,\n operatorList,\n task,\n initialState,\n /* fallbackFontDict = */ null\n );\n\n return initialState.font;\n }\n\n _getTextWidth(text, font) {\n return (\n font\n .charsToGlyphs(text)\n .reduce((width, glyph) => width + glyph.width, 0) / 1000\n );\n }\n\n _computeFontSize(height, width, text, font, lineCount) {\n let { fontSize } = this.data.defaultAppearanceData;\n let lineHeight = (fontSize || 12) * LINE_FACTOR,\n numberOfLines = Math.round(height / lineHeight);\n\n if (!fontSize) {\n // A zero value for size means that the font shall be auto-sized:\n // its size shall be computed as a function of the height of the\n // annotation rectangle (see 12.7.3.3).\n\n const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n\n if (lineCount === -1) {\n const textWidth = this._getTextWidth(text, font);\n fontSize = roundWithTwoDigits(\n Math.min(\n height / LINE_FACTOR,\n textWidth > width ? width / textWidth : Infinity\n )\n );\n numberOfLines = 1;\n } else {\n const lines = text.split(/\\r\\n?|\\n/);\n const cachedLines = [];\n for (const line of lines) {\n const encoded = font.encodeString(line).join(\"\");\n const glyphs = font.charsToGlyphs(encoded);\n const positions = font.getCharPositions(encoded);\n cachedLines.push({\n line: encoded,\n glyphs,\n positions,\n });\n }\n\n const isTooBig = fsize => {\n // Return true when the text doesn't fit the given height.\n let totalHeight = 0;\n for (const cache of cachedLines) {\n const chunks = this._splitLine(null, font, fsize, width, cache);\n totalHeight += chunks.length * fsize;\n if (totalHeight > height) {\n return true;\n }\n }\n return false;\n };\n\n // Hard to guess how many lines there are.\n // The field may have been sized to have 10 lines\n // and the user entered only 1 so if we get font size from\n // height and number of lines then we'll get something too big.\n // So we compute a fake number of lines based on height and\n // a font size equal to 12 (this is the default font size in\n // Acrobat).\n // Then we'll adjust font size to what we have really.\n numberOfLines = Math.max(numberOfLines, lineCount);\n\n while (true) {\n lineHeight = height / numberOfLines;\n fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n\n if (isTooBig(fontSize)) {\n numberOfLines++;\n continue;\n }\n\n break;\n }\n }\n\n const { fontName, fontColor } = this.data.defaultAppearanceData;\n this._defaultAppearance = createDefaultAppearance({\n fontSize,\n fontName,\n fontColor,\n });\n }\n\n return [this._defaultAppearance, fontSize, height / numberOfLines];\n }\n\n _renderText(\n text,\n font,\n fontSize,\n totalWidth,\n alignment,\n prevInfo,\n hPadding,\n vPadding\n ) {\n // TODO: we need to take into account (if possible) how the text\n // is rendered. For example in arabic, the cumulated width of some\n // glyphs isn't equal to the width of the rendered glyphs because\n // of ligatures.\n let shift;\n if (alignment === 1) {\n // Center\n const width = this._getTextWidth(text, font) * fontSize;\n shift = (totalWidth - width) / 2;\n } else if (alignment === 2) {\n // Right\n const width = this._getTextWidth(text, font) * fontSize;\n shift = totalWidth - width - hPadding;\n } else {\n shift = hPadding;\n }\n const shiftStr = numberToString(shift - prevInfo.shift);\n prevInfo.shift = shift;\n vPadding = numberToString(vPadding);\n\n return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`;\n }\n\n /**\n * @private\n */\n _getSaveFieldResources(xref) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n this.data.defaultAppearanceData,\n \"Expected `_defaultAppearanceData` to have been set.\"\n );\n }\n const { localResources, appearanceResources, acroFormResources } =\n this._fieldResources;\n\n const fontName =\n this.data.defaultAppearanceData &&\n this.data.defaultAppearanceData.fontName;\n if (!fontName) {\n return localResources || Dict.empty;\n }\n\n for (const resources of [localResources, appearanceResources]) {\n if (resources instanceof Dict) {\n const localFont = resources.get(\"Font\");\n if (localFont instanceof Dict && localFont.has(fontName)) {\n return resources;\n }\n }\n }\n if (acroFormResources instanceof Dict) {\n const acroFormFont = acroFormResources.get(\"Font\");\n if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\n const subFontDict = new Dict(xref);\n subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n\n const subResourcesDict = new Dict(xref);\n subResourcesDict.set(\"Font\", subFontDict);\n\n return Dict.merge({\n xref,\n dictArray: [subResourcesDict, localResources],\n mergeSubDicts: true,\n });\n }\n }\n return localResources || Dict.empty;\n }\n\n getFieldObject() {\n return null;\n }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this._hasText = true;\n\n const dict = params.dict;\n\n // The field value is always a string.\n if (typeof this.data.fieldValue !== \"string\") {\n this.data.fieldValue = \"\";\n }\n\n // Determine the alignment of text in the field.\n let alignment = getInheritableProperty({ dict, key: \"Q\" });\n if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n\n // Determine the maximum length of text in the field.\n let maximumLength = getInheritableProperty({ dict, key: \"MaxLen\" });\n if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n maximumLength = 0;\n }\n this.data.maxLen = maximumLength;\n\n // Process field flags for the display layer.\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb =\n this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n this.data.maxLen !== 0;\n this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\n }\n\n _getCombAppearance(\n defaultAppearance,\n font,\n text,\n fontSize,\n width,\n height,\n hPadding,\n vPadding,\n descent,\n lineHeight,\n annotationStorage\n ) {\n const combWidth = width / this.data.maxLen;\n // Empty or it has a trailing whitespace.\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n\n const buf = [];\n const positions = font.getCharPositions(text);\n for (const [start, end] of positions) {\n buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\n }\n\n const renderedComb = buf.join(` ${numberToString(combWidth)} 0 Td `);\n return (\n `/Tx BMC q ${colors}BT ` +\n defaultAppearance +\n ` 1 0 0 1 ${numberToString(hPadding)} ${numberToString(\n vPadding + descent\n )} Tm ${renderedComb}` +\n \" ET Q EMC\"\n );\n }\n\n _getMultilineAppearance(\n defaultAppearance,\n lines,\n font,\n fontSize,\n width,\n height,\n alignment,\n hPadding,\n vPadding,\n descent,\n lineHeight,\n annotationStorage\n ) {\n const buf = [];\n const totalWidth = width - 2 * hPadding;\n const prevInfo = { shift: 0 };\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n const chunks = this._splitLine(line, font, fontSize, totalWidth);\n for (let j = 0, jj = chunks.length; j < jj; j++) {\n const chunk = chunks[j];\n const vShift =\n i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight;\n buf.push(\n this._renderText(\n chunk,\n font,\n fontSize,\n width,\n alignment,\n prevInfo,\n hPadding,\n vShift\n )\n );\n }\n }\n\n // Empty or it has a trailing whitespace.\n const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\n const renderedText = buf.join(\"\\n\");\n\n return (\n `/Tx BMC q ${colors}BT ` +\n defaultAppearance +\n ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` +\n \" ET Q EMC\"\n );\n }\n\n _splitLine(line, font, fontSize, width, cache = {}) {\n line = cache.line || line;\n\n const glyphs = cache.glyphs || font.charsToGlyphs(line);\n\n if (glyphs.length <= 1) {\n // Nothing to split\n return [line];\n }\n\n const positions = cache.positions || font.getCharPositions(line);\n const scale = fontSize / 1000;\n const chunks = [];\n\n let lastSpacePosInStringStart = -1,\n lastSpacePosInStringEnd = -1,\n lastSpacePos = -1,\n startChunk = 0,\n currentWidth = 0;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const [start, end] = positions[i];\n const glyph = glyphs[i];\n const glyphWidth = glyph.width * scale;\n if (glyph.unicode === \" \") {\n if (currentWidth + glyphWidth > width) {\n // We can break here\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n lastSpacePosInStringStart = -1;\n lastSpacePos = -1;\n } else {\n currentWidth += glyphWidth;\n lastSpacePosInStringStart = start;\n lastSpacePosInStringEnd = end;\n lastSpacePos = i;\n }\n } else {\n if (currentWidth + glyphWidth > width) {\n // We must break to the last white position (if available)\n if (lastSpacePosInStringStart !== -1) {\n chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n startChunk = lastSpacePosInStringEnd;\n i = lastSpacePos + 1;\n lastSpacePosInStringStart = -1;\n currentWidth = 0;\n } else {\n // Just break in the middle of the word\n chunks.push(line.substring(startChunk, start));\n startChunk = start;\n currentWidth = glyphWidth;\n }\n } else {\n currentWidth += glyphWidth;\n }\n }\n }\n\n if (startChunk < line.length) {\n chunks.push(line.substring(startChunk, line.length));\n }\n\n return chunks;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: this.data.fieldValue,\n defaultValue: this.data.defaultFieldValue || \"\",\n multiline: this.data.multiLine,\n password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n charLimit: this.data.maxLen,\n comb: this.data.comb,\n editable: !this.data.readOnly,\n hidden: this.data.hidden,\n name: this.data.fieldName,\n rect: this.data.rect,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n type: \"text\",\n };\n }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n this.checkedAppearance = null;\n this.uncheckedAppearance = null;\n\n this.data.checkBox =\n !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.radioButton =\n this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n this.data.isTooltipOnly = false;\n\n if (this.data.checkBox) {\n this._processCheckBox(params);\n } else if (this.data.radioButton) {\n this._processRadioButton(params);\n } else if (this.data.pushButton) {\n this.data.hasOwnCanvas = true;\n this._processPushButton(params);\n } else {\n warn(\"Invalid field flags for button widget annotation\");\n }\n }\n\n async getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n ) {\n if (this.data.pushButton) {\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n false, // we use normalAppearance to render the button\n annotationStorage\n );\n }\n\n let value = null;\n let rotation = null;\n if (annotationStorage) {\n const storageEntry = annotationStorage.get(this.data.id);\n value = storageEntry ? storageEntry.value : null;\n rotation = storageEntry ? storageEntry.rotation : null;\n }\n\n if (value === null && this.appearance) {\n // Nothing in the annotationStorage.\n // But we've a default appearance so use it.\n return super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n }\n\n if (value === null || value === undefined) {\n // There is no default appearance so use the one derived\n // from the field value.\n if (this.data.checkBox) {\n value = this.data.fieldValue === this.data.exportValue;\n } else {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n }\n\n const appearance = value\n ? this.checkedAppearance\n : this.uncheckedAppearance;\n if (appearance) {\n const savedAppearance = this.appearance;\n const savedMatrix = appearance.dict.getArray(\"Matrix\") || IDENTITY_MATRIX;\n\n if (rotation) {\n appearance.dict.set(\n \"Matrix\",\n this.getRotationMatrix(annotationStorage)\n );\n }\n\n this.appearance = appearance;\n const operatorList = super.getOperatorList(\n evaluator,\n task,\n intent,\n renderForms,\n annotationStorage\n );\n this.appearance = savedAppearance;\n appearance.dict.set(\"Matrix\", savedMatrix);\n return operatorList;\n }\n\n // No appearance\n return {\n opList: new OperatorList(),\n separateForm: false,\n separateCanvas: false,\n };\n }\n\n async save(evaluator, task, annotationStorage) {\n if (this.data.checkBox) {\n return this._saveCheckbox(evaluator, task, annotationStorage);\n }\n\n if (this.data.radioButton) {\n return this._saveRadioButton(evaluator, task, annotationStorage);\n }\n\n // Nothing to save\n return null;\n }\n\n async _saveCheckbox(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n let rotation = storageEntry && storageEntry.rotation;\n let value = storageEntry && storageEntry.value;\n\n if (rotation === undefined) {\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.exportValue;\n if (defaultValue === value) {\n return null;\n }\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n if (value === undefined) {\n value = this.data.fieldValue === this.data.exportValue;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.exportValue : \"\",\n };\n\n const name = Name.get(value ? this.data.exportValue : \"Off\");\n dict.set(\"V\", name);\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n\n const encrypt = evaluator.xref.encrypt;\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n return [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n }\n\n async _saveRadioButton(evaluator, task, annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const storageEntry = annotationStorage.get(this.data.id);\n let rotation = storageEntry && storageEntry.rotation;\n let value = storageEntry && storageEntry.value;\n\n if (rotation === undefined) {\n if (value === undefined) {\n return null;\n }\n\n const defaultValue = this.data.fieldValue === this.data.buttonValue;\n if (defaultValue === value) {\n return null;\n }\n }\n\n const dict = evaluator.xref.fetchIfRef(this.ref);\n if (!(dict instanceof Dict)) {\n return null;\n }\n\n if (value === undefined) {\n value = this.data.fieldValue === this.data.buttonValue;\n }\n\n if (rotation === undefined) {\n rotation = this.rotation;\n }\n\n const xfa = {\n path: stringToPDFString(dict.get(\"T\") || \"\"),\n value: value ? this.data.buttonValue : \"\",\n };\n\n const name = Name.get(value ? this.data.buttonValue : \"Off\");\n let parentBuffer = null;\n const encrypt = evaluator.xref.encrypt;\n\n if (value) {\n if (this.parent instanceof Ref) {\n const parent = evaluator.xref.fetch(this.parent);\n let parentTransform = null;\n if (encrypt) {\n parentTransform = encrypt.createCipherTransform(\n this.parent.num,\n this.parent.gen\n );\n }\n parent.set(\"V\", name);\n parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n writeDict(parent, parentBuffer, parentTransform);\n parentBuffer.push(\"\\nendobj\\n\");\n } else if (this.parent instanceof Dict) {\n this.parent.set(\"V\", name);\n }\n }\n\n dict.set(\"AS\", name);\n dict.set(\"M\", `D:${getModificationDate()}`);\n\n const maybeMK = this._getMKDict(rotation);\n if (maybeMK) {\n dict.set(\"MK\", maybeMK);\n }\n\n let originalTransform = null;\n if (encrypt) {\n originalTransform = encrypt.createCipherTransform(\n this.ref.num,\n this.ref.gen\n );\n }\n\n const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n writeDict(dict, buffer, originalTransform);\n buffer.push(\"\\nendobj\\n\");\n\n const newRefs = [{ ref: this.ref, data: buffer.join(\"\"), xfa }];\n if (parentBuffer !== null) {\n newRefs.push({\n ref: this.parent,\n data: parentBuffer.join(\"\"),\n xfa: null,\n });\n }\n\n return newRefs;\n }\n\n _getDefaultCheckedAppearance(params, type) {\n const width = this.data.rect[2] - this.data.rect[0];\n const height = this.data.rect[3] - this.data.rect[1];\n const bbox = [0, 0, width, height];\n\n // Ratio used to have a mark slightly smaller than the bbox.\n const FONT_RATIO = 0.8;\n const fontSize = Math.min(width, height) * FONT_RATIO;\n\n // Char Metrics\n // Widths came from widths for ZapfDingbats.\n // Heights are guessed with Fontforge and FoxitDingbats.pfb.\n let metrics, char;\n if (type === \"check\") {\n // Char 33 (2713 in unicode)\n metrics = {\n width: 0.755 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x33\";\n } else if (type === \"disc\") {\n // Char 6C (25CF in unicode)\n metrics = {\n width: 0.791 * fontSize,\n height: 0.705 * fontSize,\n };\n char = \"\\x6C\";\n } else {\n unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n }\n\n // Values to center the glyph in the bbox.\n const xShift = numberToString((width - metrics.width) / 2);\n const yShift = numberToString((height - metrics.height) / 2);\n\n const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n\n const appearanceStreamDict = new Dict(params.xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", bbox);\n appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n const resources = new Dict(params.xref);\n const font = new Dict(params.xref);\n font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n resources.set(\"Font\", font);\n\n appearanceStreamDict.set(\"Resources\", resources);\n\n this.checkedAppearance = new StringStream(appearance);\n this.checkedAppearance.dict = appearanceStreamDict;\n\n this._streams.push(this.checkedAppearance);\n }\n\n _processCheckBox(params) {\n const customAppearance = params.dict.get(\"AP\");\n if (!(customAppearance instanceof Dict)) {\n return;\n }\n\n const normalAppearance = customAppearance.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1722036.\n // If we've an AS and a V then take AS.\n const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n if (typeof asValue === \"string\") {\n this.data.fieldValue = asValue;\n }\n\n const yes =\n this.data.fieldValue !== null && this.data.fieldValue !== \"Off\"\n ? this.data.fieldValue\n : \"Yes\";\n\n const exportValues = normalAppearance.getKeys();\n if (exportValues.length === 0) {\n exportValues.push(\"Off\", yes);\n } else if (exportValues.length === 1) {\n if (exportValues[0] === \"Off\") {\n exportValues.push(yes);\n } else {\n exportValues.unshift(\"Off\");\n }\n } else if (exportValues.includes(yes)) {\n exportValues.length = 0;\n exportValues.push(\"Off\", yes);\n } else {\n const otherYes = exportValues.find(v => v !== \"Off\");\n exportValues.length = 0;\n exportValues.push(\"Off\", otherYes);\n }\n\n // Don't use a \"V\" entry pointing to a non-existent appearance state,\n // see e.g. bug1720411.pdf where it's an *empty* Name-instance.\n if (!exportValues.includes(this.data.fieldValue)) {\n this.data.fieldValue = \"Off\";\n }\n\n this.data.exportValue = exportValues[1];\n\n const checkedAppearance = normalAppearance.get(this.data.exportValue);\n this.checkedAppearance =\n checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance.get(\"Off\");\n this.uncheckedAppearance =\n uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"check\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processRadioButton(params) {\n this.data.fieldValue = this.data.buttonValue = null;\n\n // The parent field's `V` entry holds a `Name` object with the appearance\n // state of whichever child field is currently in the \"on\" state.\n const fieldParent = params.dict.get(\"Parent\");\n if (fieldParent instanceof Dict) {\n this.parent = params.dict.getRaw(\"Parent\");\n const fieldParentValue = fieldParent.get(\"V\");\n if (fieldParentValue instanceof Name) {\n this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n }\n }\n\n // The button's value corresponds to its appearance state.\n const appearanceStates = params.dict.get(\"AP\");\n if (!(appearanceStates instanceof Dict)) {\n return;\n }\n const normalAppearance = appearanceStates.get(\"N\");\n if (!(normalAppearance instanceof Dict)) {\n return;\n }\n for (const key of normalAppearance.getKeys()) {\n if (key !== \"Off\") {\n this.data.buttonValue = this._decodeFormValue(key);\n break;\n }\n }\n\n const checkedAppearance = normalAppearance.get(this.data.buttonValue);\n this.checkedAppearance =\n checkedAppearance instanceof BaseStream ? checkedAppearance : null;\n const uncheckedAppearance = normalAppearance.get(\"Off\");\n this.uncheckedAppearance =\n uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\n\n if (this.checkedAppearance) {\n this._streams.push(this.checkedAppearance);\n } else {\n this._getDefaultCheckedAppearance(params, \"disc\");\n }\n if (this.uncheckedAppearance) {\n this._streams.push(this.uncheckedAppearance);\n }\n this._fallbackFontDict = this.fallbackFontDict;\n }\n\n _processPushButton(params) {\n if (\n !params.dict.has(\"A\") &&\n !params.dict.has(\"AA\") &&\n !this.data.alternativeText\n ) {\n warn(\"Push buttons without action dictionaries are not supported\");\n return;\n }\n\n this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n docAttachments: params.attachments,\n });\n }\n\n getFieldObject() {\n let type = \"button\";\n let exportValues;\n if (this.data.checkBox) {\n type = \"checkbox\";\n exportValues = this.data.exportValue;\n } else if (this.data.radioButton) {\n type = \"radiobutton\";\n exportValues = this.data.buttonValue;\n }\n return {\n id: this.data.id,\n value: this.data.fieldValue || \"Off\",\n defaultValue: this.data.defaultFieldValue,\n exportValues,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n type,\n };\n }\n\n get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"ZapfDingbats\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"ZapfDingbatsEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n // Determine the options. The options array may consist of strings or\n // arrays. If the array consists of arrays, then the first element of\n // each array is the export value and the second element of each array is\n // the display value. If the array consists of strings, then these\n // represent both the export and display value. In this case, we convert\n // it to an array of arrays as well for convenience in the display layer.\n // Note that the specification does not state that the `Opt` field is\n // inheritable, but in practice PDF generators do make annotations\n // inherit the options from a parent annotation (issue 8094).\n this.data.options = [];\n\n const options = getInheritableProperty({ dict, key: \"Opt\" });\n if (Array.isArray(options)) {\n for (let i = 0, ii = options.length; i < ii; i++) {\n const option = xref.fetchIfRef(options[i]);\n const isOptionArray = Array.isArray(option);\n\n this.data.options[i] = {\n exportValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[0]) : option\n ),\n displayValue: this._decodeFormValue(\n isOptionArray ? xref.fetchIfRef(option[1]) : option\n ),\n };\n }\n }\n\n // The field value can be `null` if no item is selected, a string if one\n // item is selected or an array of strings if multiple items are selected.\n // For consistency in the API and convenience in the display layer, we\n // always make the field value an array with zero, one or multiple items.\n if (typeof this.data.fieldValue === \"string\") {\n this.data.fieldValue = [this.data.fieldValue];\n } else if (!this.data.fieldValue) {\n this.data.fieldValue = [];\n }\n\n // Process field flags for the display layer.\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n this._hasText = true;\n }\n\n getFieldObject() {\n const type = this.data.combo ? \"combobox\" : \"listbox\";\n const value =\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n return {\n id: this.data.id,\n value,\n defaultValue: this.data.defaultFieldValue,\n editable: !this.data.readOnly,\n name: this.data.fieldName,\n rect: this.data.rect,\n numItems: this.data.fieldValue.length,\n multipleSelection: this.data.multiSelect,\n hidden: this.data.hidden,\n actions: this.data.actions,\n items: this.data.options,\n page: this.data.pageIndex,\n strokeColor: this.data.borderColor,\n fillColor: this.data.backgroundColor,\n rotation: this.rotation,\n type,\n };\n }\n\n async _getAppearance(evaluator, task, intent, annotationStorage) {\n if (this.data.combo) {\n return super._getAppearance(evaluator, task, intent, annotationStorage);\n }\n\n let exportedValue, rotation;\n const storageEntry = annotationStorage\n ? annotationStorage.get(this.data.id)\n : undefined;\n\n if (storageEntry) {\n rotation = storageEntry.rotation;\n exportedValue = storageEntry.value;\n }\n\n if (\n rotation === undefined &&\n exportedValue === undefined &&\n !this._needAppearances\n ) {\n // The annotation hasn't been rendered so use the appearance\n return null;\n }\n\n if (exportedValue === undefined) {\n exportedValue = this.data.fieldValue;\n } else if (!Array.isArray(exportedValue)) {\n exportedValue = [exportedValue];\n }\n\n const defaultPadding = 1;\n const defaultHPadding = 2;\n let totalHeight = this.data.rect[3] - this.data.rect[1];\n let totalWidth = this.data.rect[2] - this.data.rect[0];\n\n if (rotation === 90 || rotation === 270) {\n [totalWidth, totalHeight] = [totalHeight, totalWidth];\n }\n\n const lineCount = this.data.options.length;\n const valueIndices = [];\n for (let i = 0; i < lineCount; i++) {\n const { exportValue } = this.data.options[i];\n if (exportedValue.includes(exportValue)) {\n valueIndices.push(i);\n }\n }\n\n if (!this._defaultAppearance) {\n // The DA is required and must be a string.\n // If there is no font named Helvetica in the resource dictionary,\n // the evaluator will fall back to a default font.\n // Doing so prevents exceptions and allows saving/printing\n // the file as expected.\n this.data.defaultAppearanceData = parseDefaultAppearance(\n (this._defaultAppearance = \"/Helvetica 0 Tf 0 g\")\n );\n }\n\n const font = await WidgetAnnotation._getFontData(\n evaluator,\n task,\n this.data.defaultAppearanceData,\n this._fieldResources.mergedResources\n );\n\n let defaultAppearance;\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n const lineHeight = (totalHeight - defaultPadding) / lineCount;\n let lineWidth = -1;\n let value;\n for (const { displayValue } of this.data.options) {\n const width = this._getTextWidth(displayValue, font);\n if (width > lineWidth) {\n lineWidth = width;\n value = displayValue;\n }\n }\n\n [defaultAppearance, fontSize] = this._computeFontSize(\n lineHeight,\n totalWidth - 2 * defaultHPadding,\n value,\n font,\n -1\n );\n } else {\n defaultAppearance = this._defaultAppearance;\n }\n\n const lineHeight = fontSize * LINE_FACTOR;\n const vPadding = (lineHeight - fontSize) / 2;\n const numberOfVisibleLines = Math.floor(totalHeight / lineHeight);\n\n let firstIndex;\n if (valueIndices.length === 1) {\n const valuePosition = valueIndices[0];\n const indexInPage = valuePosition % numberOfVisibleLines;\n firstIndex = valuePosition - indexInPage;\n } else {\n // If nothing is selected (valueIndice.length === 0), we render\n // from the first element.\n firstIndex = valueIndices.length ? valueIndices[0] : 0;\n }\n const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\n\n const buf = [\"/Tx BMC q\", `1 1 ${totalWidth} ${totalHeight} re W n`];\n\n if (valueIndices.length) {\n // This value has been copied/pasted from annotation-choice-widget.pdf.\n // It corresponds to rgb(153, 193, 218).\n buf.push(\"0.600006 0.756866 0.854904 rg\");\n\n // Highlight the lines in filling a blue rectangle at the selected\n // positions.\n for (const index of valueIndices) {\n if (firstIndex <= index && index < end) {\n buf.push(\n `1 ${\n totalHeight - (index - firstIndex + 1) * lineHeight\n } ${totalWidth} ${lineHeight} re f`\n );\n }\n }\n }\n buf.push(\"BT\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\n\n const prevInfo = { shift: 0 };\n for (let i = firstIndex; i < end; i++) {\n const { displayValue } = this.data.options[i];\n const vpadding = i === firstIndex ? vPadding : 0;\n buf.push(\n this._renderText(\n displayValue,\n font,\n fontSize,\n totalWidth,\n 0,\n prevInfo,\n defaultHPadding,\n -lineHeight + vpadding\n )\n );\n }\n\n buf.push(\"ET Q EMC\");\n\n return buf.join(\"\\n\");\n }\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n constructor(params) {\n super(params);\n\n // Unset the fieldValue since it's (most likely) a `Dict` which is\n // non-serializable and will thus cause errors when sending annotations\n // to the main-thread (issue 10347).\n this.data.fieldValue = null;\n }\n\n getFieldObject() {\n return {\n id: this.data.id,\n value: null,\n page: this.data.pageIndex,\n type: \"signature\",\n };\n }\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n constructor(params) {\n const DEFAULT_ICON_SIZE = 22; // px\n\n super(params);\n\n const { dict } = params;\n this.data.annotationType = AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = \"NoIcon\";\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n }\n\n if (dict.has(\"State\")) {\n this.data.state = dict.get(\"State\") || null;\n this.data.stateModel = dict.get(\"StateModel\") || null;\n } else {\n this.data.state = null;\n this.data.stateModel = null;\n }\n }\n}\n\nclass LinkAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.LINK;\n\n const quadPoints = getQuadPoints(params.dict, this.rectangle);\n if (quadPoints) {\n this.data.quadPoints = quadPoints;\n }\n\n // The color entry for a link annotation is the color of the border.\n this.data.borderColor = this.data.borderColor || this.data.color;\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: this.data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n docAttachments: params.attachments,\n });\n }\n}\n\nclass PopupAnnotation extends Annotation {\n constructor(params) {\n super(params);\n\n const { dict } = params;\n this.data.annotationType = AnnotationType.POPUP;\n\n let parentItem = dict.get(\"Parent\");\n if (!parentItem) {\n warn(\"Popup annotation has a missing or invalid parent annotation.\");\n return;\n }\n\n const parentSubtype = parentItem.get(\"Subtype\");\n this.data.parentType =\n parentSubtype instanceof Name ? parentSubtype.name : null;\n const rawParent = dict.getRaw(\"Parent\");\n this.data.parentId = rawParent instanceof Ref ? rawParent.toString() : null;\n\n const parentRect = parentItem.getArray(\"Rect\");\n if (Array.isArray(parentRect) && parentRect.length === 4) {\n this.data.parentRect = Util.normalizeRect(parentRect);\n } else {\n this.data.parentRect = [0, 0, 0, 0];\n }\n\n const rt = parentItem.get(\"RT\");\n if (isName(rt, AnnotationReplyType.GROUP)) {\n // Subordinate annotations in a group should inherit\n // the group attributes from the primary annotation.\n parentItem = parentItem.get(\"IRT\");\n }\n\n if (!parentItem.has(\"M\")) {\n this.data.modificationDate = null;\n } else {\n this.setModificationDate(parentItem.get(\"M\"));\n this.data.modificationDate = this.modificationDate;\n }\n\n if (!parentItem.has(\"C\")) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray(\"C\"));\n this.data.color = this.color;\n }\n\n // If the Popup annotation is not viewable, but the parent annotation is,\n // that is most likely a bug. Fallback to inherit the flags from the parent\n // annotation (this is consistent with the behaviour in Adobe Reader).\n if (!this.viewable) {\n const parentFlags = parentItem.get(\"F\");\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n\n this.setTitle(parentItem.get(\"T\"));\n this.data.titleObj = this._title;\n\n this.setContents(parentItem.get(\"Contents\"));\n this.data.contentsObj = this._contents;\n\n if (parentItem.has(\"RC\")) {\n this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n }\n }\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { xref } = params;\n this.data.annotationType = AnnotationType.FREETEXT;\n this.setDefaultAppearance(params);\n\n if (!this.appearance && this._isOffscreenCanvasSupported) {\n const fakeUnicodeFont = new FakeUnicodeFont(xref, \"sans-serif\");\n const fontData = this.data.defaultAppearanceData;\n this.appearance = fakeUnicodeFont.createAppearance(\n this._contents.str,\n this.rectangle,\n this.rotation,\n fontData.fontSize || 10,\n fontData.fontColor\n );\n this._streams.push(this.appearance, FakeUnicodeFont.toUnicodeStream);\n } else if (!this._isOffscreenCanvasSupported) {\n warn(\n \"FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.\"\n );\n }\n }\n\n get hasTextContent() {\n return !!this.appearance;\n }\n\n static createNewDict(annotation, xref, { apRef, ap }) {\n const { color, fontSize, rect, rotation, user, value } = annotation;\n const freetext = new Dict(xref);\n freetext.set(\"Type\", Name.get(\"Annot\"));\n freetext.set(\"Subtype\", Name.get(\"FreeText\"));\n freetext.set(\"CreationDate\", `D:${getModificationDate()}`);\n freetext.set(\"Rect\", rect);\n const da = `/Helv ${fontSize} Tf ${getPdfColor(color, /* isFill */ true)}`;\n freetext.set(\"DA\", da);\n freetext.set(\n \"Contents\",\n isAscii(value)\n ? value\n : stringToUTF16String(value, /* bigEndian = */ true)\n );\n freetext.set(\"F\", 4);\n freetext.set(\"Border\", [0, 0, 0]);\n freetext.set(\"Rotate\", rotation);\n\n if (user) {\n freetext.set(\n \"T\",\n isAscii(user) ? user : stringToUTF16String(user, /* bigEndian = */ true)\n );\n }\n\n if (apRef || ap) {\n const n = new Dict(xref);\n freetext.set(\"AP\", n);\n\n if (apRef) {\n n.set(\"N\", apRef);\n } else {\n n.set(\"N\", ap);\n }\n }\n\n return freetext;\n }\n\n static async createNewAppearanceStream(annotation, xref, params) {\n const { baseFontRef, evaluator, task } = params;\n const { color, fontSize, rect, rotation, value } = annotation;\n\n const resources = new Dict(xref);\n const font = new Dict(xref);\n\n if (baseFontRef) {\n font.set(\"Helv\", baseFontRef);\n } else {\n const baseFont = new Dict(xref);\n baseFont.set(\"BaseFont\", Name.get(\"Helvetica\"));\n baseFont.set(\"Type\", Name.get(\"Font\"));\n baseFont.set(\"Subtype\", Name.get(\"Type1\"));\n baseFont.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n font.set(\"Helv\", baseFont);\n }\n resources.set(\"Font\", font);\n\n const helv = await WidgetAnnotation._getFontData(\n evaluator,\n task,\n {\n fontName: \"Helvetica\",\n fontSize,\n },\n resources\n );\n\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n\n const lines = value.split(\"\\n\");\n const scale = fontSize / 1000;\n let totalWidth = -Infinity;\n const encodedLines = [];\n for (let line of lines) {\n const encoded = helv.encodeString(line);\n if (encoded.length > 1) {\n // The font doesn't contain all the chars.\n return null;\n }\n line = encoded.join(\"\");\n encodedLines.push(line);\n let lineWidth = 0;\n const glyphs = helv.charsToGlyphs(line);\n for (const glyph of glyphs) {\n lineWidth += glyph.width * scale;\n }\n totalWidth = Math.max(totalWidth, lineWidth);\n }\n\n let hscale = 1;\n if (totalWidth > w) {\n hscale = w / totalWidth;\n }\n let vscale = 1;\n const lineHeight = LINE_FACTOR * fontSize;\n const lineDescent = LINE_DESCENT_FACTOR * fontSize;\n const totalHeight = lineHeight * lines.length;\n if (totalHeight > h) {\n vscale = h / totalHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n const buffer = [\n \"q\",\n `0 0 ${numberToString(w)} ${numberToString(h)} re W n`,\n `BT`,\n `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(\n color,\n /* isFill */ true\n )}`,\n `/Helv ${numberToString(newFontSize)} Tf`,\n ];\n\n const vShift = numberToString(lineHeight);\n for (const line of encodedLines) {\n buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", [0, 0, w, h]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n appearanceStreamDict.set(\"Resources\", resources);\n\n if (rotation) {\n const matrix = getRotationMatrix(rotation, w, h);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n\n return ap;\n }\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.LINE;\n\n const lineCoordinates = dict.getArray(\"L\");\n this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\n\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n // The default fill color is transparent. Setting the fill colour is\n // necessary if/when we want to add support for non-default line endings.\n const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [\n this.data.lineCoordinates[0] - borderAdjust,\n this.data.lineCoordinates[1] - borderAdjust,\n this.data.lineCoordinates[2] + borderAdjust,\n this.data.lineCoordinates[3] + borderAdjust,\n ];\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\n `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\n \"S\"\n );\n return [\n points[0].x - borderWidth,\n points[1].x + borderWidth,\n points[3].y - borderWidth,\n points[1].y + borderWidth,\n ];\n },\n });\n }\n }\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.SQUARE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n // The default fill color is transparent.\n const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x = points[2].x + this.borderStyle.width / 2;\n const y = points[2].y + this.borderStyle.width / 2;\n const width = points[3].x - points[2].x - this.borderStyle.width;\n const height = points[1].y - points[3].y - this.borderStyle.width;\n buffer.push(`${x} ${y} ${width} ${height} re`);\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.CIRCLE;\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n const interiorColor = getRgbColor(dict.getArray(\"IC\"), null);\n // The default fill color is transparent.\n const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\n const fillAlpha = fillColor ? strokeAlpha : null;\n\n if (this.borderStyle.width === 0 && !fillColor) {\n // Prevent rendering a \"hairline\" border (fixes issue14164.pdf).\n return;\n }\n\n // Circles are approximated by Bézier curves with four segments since\n // there is no circle primitive in the PDF specification. For the control\n // points distance, see https://stackoverflow.com/a/27863181.\n const controlPointsDistance = (4 / 3) * Math.tan(Math.PI / (2 * 4));\n\n this._setDefaultAppearance({\n xref,\n extra: `${this.borderStyle.width} w`,\n strokeColor,\n fillColor,\n strokeAlpha,\n fillAlpha,\n pointsCallback: (buffer, points) => {\n const x0 = points[0].x + this.borderStyle.width / 2;\n const y0 = points[0].y - this.borderStyle.width / 2;\n const x1 = points[3].x - this.borderStyle.width / 2;\n const y1 = points[3].y + this.borderStyle.width / 2;\n const xMid = x0 + (x1 - x0) / 2;\n const yMid = y0 + (y1 - y0) / 2;\n const xOffset = ((x1 - x0) / 2) * controlPointsDistance;\n const yOffset = ((y1 - y0) / 2) * controlPointsDistance;\n\n buffer.push(\n `${xMid} ${y1} m`,\n `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\n `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\n `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\n `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\n \"h\"\n );\n if (fillColor) {\n buffer.push(\"B\");\n } else {\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.POLYLINE;\n this.data.vertices = [];\n\n if (!(this instanceof PolygonAnnotation)) {\n // Only meaningful for polyline annotations.\n this.setLineEndings(dict.getArray(\"LE\"));\n this.data.lineEndings = this.lineEndings;\n }\n\n // The vertices array is an array of numbers representing the alternating\n // horizontal and vertical coordinates, respectively, of each vertex.\n // Convert this to an array of objects with x and y coordinates.\n const rawVertices = dict.getArray(\"Vertices\");\n if (!Array.isArray(rawVertices)) {\n return;\n }\n for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n this.data.vertices.push({\n x: rawVertices[i],\n y: rawVertices[i + 1],\n });\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const vertex of this.data.vertices) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const vertices = this.data.vertices;\n for (let i = 0, ii = vertices.length; i < ii; i++) {\n buffer.push(\n `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n constructor(params) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(params);\n\n this.data.annotationType = AnnotationType.POLYGON;\n }\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.CARET;\n }\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.INK;\n this.data.inkLists = [];\n\n const rawInkLists = dict.getArray(\"InkList\");\n if (!Array.isArray(rawInkLists)) {\n return;\n }\n for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n // The raw ink lists array contains arrays of numbers representing\n // the alternating horizontal and vertical coordinates, respectively,\n // of each vertex. Convert this to an array of objects with x and y\n // coordinates.\n this.data.inkLists.push([]);\n for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n this.data.inkLists[i].push({\n x: xref.fetchIfRef(rawInkLists[i][j]),\n y: xref.fetchIfRef(rawInkLists[i][j + 1]),\n });\n }\n }\n\n if (!this.appearance) {\n // The default stroke color is black.\n const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n const borderWidth = this.borderStyle.width || 1,\n borderAdjust = 2 * borderWidth;\n\n // If the /Rect-entry is empty/wrong, create a fallback rectangle so that\n // we get similar rendering/highlighting behaviour as in Adobe Reader.\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const inkLists of this.data.inkLists) {\n for (const vertex of inkLists) {\n bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n }\n }\n if (!Util.intersect(this.rectangle, bbox)) {\n this.rectangle = bbox;\n }\n\n this._setDefaultAppearance({\n xref,\n extra: `${borderWidth} w`,\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n // According to the specification, see \"12.5.6.13 Ink Annotations\":\n // When drawn, the points shall be connected by straight lines or\n // curves in an implementation-dependent way.\n // In order to simplify things, we utilize straight lines for now.\n for (const inkList of this.data.inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i++) {\n buffer.push(\n `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`\n );\n }\n buffer.push(\"S\");\n }\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n }\n\n static createNewDict(annotation, xref, { apRef, ap }) {\n const { paths, rect, rotation } = annotation;\n const ink = new Dict(xref);\n ink.set(\"Type\", Name.get(\"Annot\"));\n ink.set(\"Subtype\", Name.get(\"Ink\"));\n ink.set(\"CreationDate\", `D:${getModificationDate()}`);\n ink.set(\"Rect\", rect);\n ink.set(\n \"InkList\",\n paths.map(p => p.points)\n );\n ink.set(\"F\", 4);\n ink.set(\"Border\", [0, 0, 0]);\n ink.set(\"Rotate\", rotation);\n\n const n = new Dict(xref);\n ink.set(\"AP\", n);\n\n if (apRef) {\n n.set(\"N\", apRef);\n } else {\n n.set(\"N\", ap);\n }\n\n return ink;\n }\n\n static async createNewAppearanceStream(annotation, xref, params) {\n const { color, rect, rotation, paths, thickness, opacity } = annotation;\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n\n const appearanceBuffer = [\n `${thickness} w 1 J 1 j`,\n `${getPdfColor(color, /* isFill */ false)}`,\n ];\n\n if (opacity !== 1) {\n appearanceBuffer.push(\"/R0 gs\");\n }\n\n const buffer = [];\n for (const { bezier } of paths) {\n buffer.length = 0;\n buffer.push(\n `${numberToString(bezier[0])} ${numberToString(bezier[1])} m`\n );\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const curve = bezier\n .slice(i, i + 6)\n .map(numberToString)\n .join(\" \");\n buffer.push(`${curve} c`);\n }\n buffer.push(\"S\");\n appearanceBuffer.push(buffer.join(\"\\n\"));\n }\n const appearance = appearanceBuffer.join(\"\\n\");\n\n const appearanceStreamDict = new Dict(xref);\n appearanceStreamDict.set(\"FormType\", 1);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", [0, 0, w, h]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n\n if (rotation) {\n const matrix = getRotationMatrix(rotation, w, h);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n\n if (opacity !== 1) {\n const resources = new Dict(xref);\n const extGState = new Dict(xref);\n const r0 = new Dict(xref);\n r0.set(\"CA\", opacity);\n r0.set(\"Type\", Name.get(\"ExtGState\"));\n extGState.set(\"R0\", r0);\n resources.set(\"ExtGState\", extGState);\n appearanceStreamDict.set(\"Resources\", resources);\n }\n\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n\n return ap;\n }\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\n if (quadPoints) {\n const resources =\n this.appearance && this.appearance.dict.get(\"Resources\");\n\n if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n if (this.appearance) {\n // Workaround for cases where there's no /ExtGState-entry directly\n // available, e.g. when the appearance stream contains a /XObject of\n // the /Form-type, since that causes the highlighting to completely\n // obscure the PDF content below it (fixes issue13242.pdf).\n warn(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n }\n // Default color is yellow in Acrobat Reader\n const fillColor = this.color ? getPdfColorArray(this.color) : [1, 1, 0];\n const fillAlpha = dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref,\n fillColor,\n blendMode: \"Multiply\",\n fillAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[0].x} ${points[0].y} m`,\n `${points[1].x} ${points[1].y} l`,\n `${points[3].x} ${points[3].y} l`,\n `${points[2].x} ${points[2].y} l`,\n \"f\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.UNDERLINE;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? getPdfColorArray(this.color)\n : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${points[2].x} ${points[2].y} m`,\n `${points[3].x} ${points[3].y} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.SQUIGGLY;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? getPdfColorArray(this.color)\n : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n const dy = (points[0].y - points[2].y) / 6;\n let shift = dy;\n let x = points[2].x;\n const y = points[2].y;\n const xEnd = points[3].x;\n buffer.push(`${x} ${y + shift} m`);\n do {\n x += 2;\n shift = shift === 0 ? dy : 0;\n buffer.push(`${x} ${y + shift} l`);\n } while (x < xEnd);\n buffer.push(\"S\");\n return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n this.data.annotationType = AnnotationType.STRIKEOUT;\n\n const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\n if (quadPoints) {\n if (!this.appearance) {\n // Default color is black\n const strokeColor = this.color\n ? getPdfColorArray(this.color)\n : [0, 0, 0];\n const strokeAlpha = dict.get(\"CA\");\n\n this._setDefaultAppearance({\n xref,\n extra: \"[] 0 d 1 w\",\n strokeColor,\n strokeAlpha,\n pointsCallback: (buffer, points) => {\n buffer.push(\n `${(points[0].x + points[2].x) / 2} ` +\n `${(points[0].y + points[2].y) / 2} m`,\n `${(points[1].x + points[3].x) / 2} ` +\n `${(points[1].y + points[3].y) / 2} l`,\n \"S\"\n );\n return [points[0].x, points[1].x, points[3].y, points[1].y];\n },\n });\n }\n } else {\n this.data.hasPopup = false;\n }\n }\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n this.data.annotationType = AnnotationType.STAMP;\n }\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n constructor(params) {\n super(params);\n\n const { dict, xref } = params;\n const file = new FileSpec(dict.get(\"FS\"), xref);\n\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n\n const name = dict.get(\"Name\");\n this.data.name =\n name instanceof Name ? stringToPDFString(name.name) : \"PushPin\";\n }\n}\n\nexport {\n Annotation,\n AnnotationBorderStyle,\n AnnotationFactory,\n getQuadPoints,\n MarkupAnnotation,\n PopupAnnotation,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n escapePDFName,\n getRotationMatrix,\n numberToString,\n stringToUTF16HexString,\n} from \"./core_utils.js\";\nimport { LINE_DESCENT_FACTOR, LINE_FACTOR, OPS, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { EvaluatorPreprocessor } from \"./evaluator.js\";\nimport { StringStream } from \"./stream.js\";\n\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\n constructor(str) {\n super(new StringStream(str));\n }\n\n parse() {\n const operation = {\n fn: 0,\n args: [],\n };\n const result = {\n fontSize: 0,\n fontName: \"\",\n fontColor: /* black = */ new Uint8ClampedArray(3),\n };\n\n try {\n while (true) {\n operation.args.length = 0; // Ensure that `args` it's always reset.\n\n if (!this.read(operation)) {\n break;\n }\n if (this.savedStatesDepth !== 0) {\n continue; // Don't get info in save/restore sections.\n }\n const { fn, args } = operation;\n\n switch (fn | 0) {\n case OPS.setFont:\n const [fontName, fontSize] = args;\n if (fontName instanceof Name) {\n result.fontName = fontName.name;\n }\n if (typeof fontSize === \"number\" && fontSize > 0) {\n result.fontSize = fontSize;\n }\n break;\n case OPS.setFillRGBColor:\n ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillGray:\n ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n break;\n case OPS.setFillColorSpace:\n ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n break;\n }\n }\n } catch (reason) {\n warn(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n }\n\n return result;\n }\n}\n\n// Parse DA to extract font and color information.\nfunction parseDefaultAppearance(str) {\n return new DefaultAppearanceEvaluator(str).parse();\n}\n\nfunction getPdfColor(color, isFill) {\n if (color[0] === color[1] && color[1] === color[2]) {\n const gray = color[0] / 255;\n return `${numberToString(gray)} ${isFill ? \"g\" : \"G\"}`;\n }\n return (\n Array.from(color, c => numberToString(c / 255)).join(\" \") +\n ` ${isFill ? \"rg\" : \"RG\"}`\n );\n}\n\n// Create default appearance string from some information.\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\n return `/${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(\n fontColor,\n /* isFill */ true\n )}`;\n}\n\nclass FakeUnicodeFont {\n constructor(xref, fontFamily) {\n this.xref = xref;\n this.widths = null;\n this.firstChar = Infinity;\n this.lastChar = -Infinity;\n this.fontFamily = fontFamily;\n\n const canvas = new OffscreenCanvas(1, 1);\n this.ctxMeasure = canvas.getContext(\"2d\");\n\n if (!FakeUnicodeFont._fontNameId) {\n FakeUnicodeFont._fontNameId = 1;\n }\n this.fontName = Name.get(\n `InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont._fontNameId++}`\n );\n }\n\n get toUnicodeRef() {\n if (!FakeUnicodeFont._toUnicodeRef) {\n const toUnicode = `/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo\n<< /Registry (Adobe)\n/Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000> <FFFF>\nendcodespacerange\n1 beginbfrange\n<0000> <FFFF> <0000>\nendbfrange\nendcmap CMapName currentdict /CMap defineresource pop end end`;\n const toUnicodeStream = (FakeUnicodeFont.toUnicodeStream =\n new StringStream(toUnicode));\n const toUnicodeDict = new Dict(this.xref);\n toUnicodeStream.dict = toUnicodeDict;\n toUnicodeDict.set(\"Length\", toUnicode.length);\n FakeUnicodeFont._toUnicodeRef =\n this.xref.getNewPersistentRef(toUnicodeStream);\n }\n\n return FakeUnicodeFont._toUnicodeRef;\n }\n\n get fontDescriptorRef() {\n if (!FakeUnicodeFont._fontDescriptorRef) {\n const fontDescriptor = new Dict(this.xref);\n fontDescriptor.set(\"Type\", Name.get(\"FontDescriptor\"));\n fontDescriptor.set(\"FontName\", this.fontName);\n fontDescriptor.set(\"FontFamily\", \"MyriadPro Regular\");\n fontDescriptor.set(\"FontBBox\", [0, 0, 0, 0]);\n fontDescriptor.set(\"FontStretch\", Name.get(\"Normal\"));\n fontDescriptor.set(\"FontWeight\", 400);\n fontDescriptor.set(\"ItalicAngle\", 0);\n\n FakeUnicodeFont._fontDescriptorRef =\n this.xref.getNewPersistentRef(fontDescriptor);\n }\n\n return FakeUnicodeFont._fontDescriptorRef;\n }\n\n get descendantFontRef() {\n const descendantFont = new Dict(this.xref);\n descendantFont.set(\"BaseFont\", this.fontName);\n descendantFont.set(\"Type\", Name.get(\"Font\"));\n descendantFont.set(\"Subtype\", Name.get(\"CIDFontType0\"));\n descendantFont.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n descendantFont.set(\"FirstChar\", this.firstChar);\n descendantFont.set(\"LastChar\", this.lastChar);\n descendantFont.set(\"FontDescriptor\", this.fontDescriptorRef);\n descendantFont.set(\"DW\", 1000);\n\n const widths = [];\n const chars = [...this.widths.entries()].sort();\n let currentChar = null;\n let currentWidths = null;\n for (const [char, width] of chars) {\n if (!currentChar) {\n currentChar = char;\n currentWidths = [width];\n continue;\n }\n if (char === currentChar + currentWidths.length) {\n currentWidths.push(width);\n } else {\n widths.push(currentChar, currentWidths);\n currentChar = char;\n currentWidths = [width];\n }\n }\n\n if (currentChar) {\n widths.push(currentChar, currentWidths);\n }\n\n descendantFont.set(\"W\", widths);\n\n const cidSystemInfo = new Dict(this.xref);\n cidSystemInfo.set(\"Ordering\", \"Identity\");\n cidSystemInfo.set(\"Registry\", \"Adobe\");\n cidSystemInfo.set(\"Supplement\", 0);\n descendantFont.set(\"CIDSystemInfo\", cidSystemInfo);\n\n return this.xref.getNewPersistentRef(descendantFont);\n }\n\n get baseFontRef() {\n const baseFont = new Dict(this.xref);\n baseFont.set(\"BaseFont\", this.fontName);\n baseFont.set(\"Type\", Name.get(\"Font\"));\n baseFont.set(\"Subtype\", Name.get(\"Type0\"));\n baseFont.set(\"Encoding\", Name.get(\"Identity-H\"));\n baseFont.set(\"DescendantFonts\", [this.descendantFontRef]);\n baseFont.set(\"ToUnicode\", this.toUnicodeRef);\n\n return this.xref.getNewPersistentRef(baseFont);\n }\n\n get resources() {\n const resources = new Dict(this.xref);\n const font = new Dict(this.xref);\n font.set(this.fontName.name, this.baseFontRef);\n resources.set(\"Font\", font);\n\n return resources;\n }\n\n _createContext() {\n this.widths = new Map();\n this.ctxMeasure.font = `1000px ${this.fontFamily}`;\n\n return this.ctxMeasure;\n }\n\n createFontResources(text) {\n const ctx = this._createContext();\n for (const line of text.split(/\\r\\n?|\\n/)) {\n for (const char of line.split(\"\")) {\n const code = char.charCodeAt(0);\n if (this.widths.has(code)) {\n continue;\n }\n const metrics = ctx.measureText(char);\n const width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n\n return this.resources;\n }\n\n createAppearance(text, rect, rotation, fontSize, bgColor) {\n const ctx = this._createContext();\n const lines = [];\n let maxWidth = -Infinity;\n for (const line of text.split(/\\r\\n?|\\n/)) {\n lines.push(line);\n // The line width isn't the sum of the char widths, because in some\n // languages, like arabic, it'd be wrong because of ligatures.\n const lineWidth = ctx.measureText(line).width;\n maxWidth = Math.max(maxWidth, lineWidth);\n for (const char of line.split(\"\")) {\n const code = char.charCodeAt(0);\n let width = this.widths.get(code);\n if (width === undefined) {\n const metrics = ctx.measureText(char);\n width = Math.ceil(metrics.width);\n this.widths.set(code, width);\n this.firstChar = Math.min(code, this.firstChar);\n this.lastChar = Math.max(code, this.lastChar);\n }\n }\n }\n maxWidth *= fontSize / 1000;\n\n const [x1, y1, x2, y2] = rect;\n let w = x2 - x1;\n let h = y2 - y1;\n\n if (rotation % 180 !== 0) {\n [w, h] = [h, w];\n }\n\n let hscale = 1;\n if (maxWidth > w) {\n hscale = w / maxWidth;\n }\n let vscale = 1;\n const lineHeight = LINE_FACTOR * fontSize;\n const lineDescent = LINE_DESCENT_FACTOR * fontSize;\n const maxHeight = lineHeight * lines.length;\n if (maxHeight > h) {\n vscale = h / maxHeight;\n }\n const fscale = Math.min(hscale, vscale);\n const newFontSize = fontSize * fscale;\n\n const buffer = [\n \"q\",\n `0 0 ${numberToString(w)} ${numberToString(h)} re W n`,\n `BT`,\n `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(\n bgColor,\n /* isFill */ true\n )}`,\n `/${this.fontName.name} ${numberToString(newFontSize)} Tf`,\n ];\n\n const vShift = numberToString(lineHeight);\n for (const line of lines) {\n buffer.push(`0 -${vShift} Td <${stringToUTF16HexString(line)}> Tj`);\n }\n buffer.push(\"ET\", \"Q\");\n const appearance = buffer.join(\"\\n\");\n\n const appearanceStreamDict = new Dict(this.xref);\n appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n appearanceStreamDict.set(\"BBox\", [0, 0, w, h]);\n appearanceStreamDict.set(\"Length\", appearance.length);\n appearanceStreamDict.set(\"Resources\", this.resources);\n\n if (rotation) {\n const matrix = getRotationMatrix(rotation, w, h);\n appearanceStreamDict.set(\"Matrix\", matrix);\n }\n\n const ap = new StringStream(appearance);\n ap.dict = appearanceStreamDict;\n\n return ap;\n }\n}\n\nexport {\n createDefaultAppearance,\n FakeUnicodeFont,\n getPdfColor,\n parseDefaultAppearance,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nclass ColorSpace {\n constructor(name, numComps) {\n if (this.constructor === ColorSpace) {\n unreachable(\"Cannot initialize ColorSpace.\");\n }\n this.name = name;\n this.numComps = numComps;\n }\n\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb(src, srcOffset) {\n const rgb = new Uint8ClampedArray(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n }\n\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n /**\n * Determines the number of bytes required to store the result of the\n * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n */\n getOutputLength(inputLength, alpha01) {\n unreachable(\"Should not call ColorSpace.getOutputLength\");\n }\n\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough(bits) {\n return false;\n }\n\n /**\n * Refer to the static `ColorSpace.isDefaultDecode` method below.\n */\n isDefaultDecode(decodeMap, bpc) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n }\n\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n );\n }\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (\n this.numComps === 1 &&\n count > numComponentColors &&\n this.name !== \"DeviceGray\" &&\n this.name !== \"DeviceRGB\"\n ) {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n const allColors =\n bpc <= 8\n ? new Uint8Array(numComponentColors)\n : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(\n allColors,\n 0,\n numComponentColors,\n colorMap,\n 0,\n bpc,\n /* alpha01 = */ 0\n );\n\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(\n comps,\n 0,\n width * actualHeight,\n dest,\n 0,\n bpc,\n alpha01\n );\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(\n rgbBuf,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n\n /**\n * @private\n */\n static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace._cache - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (!parsedColorSpace) {\n throw new Error(\n 'ColorSpace._cache - expected \"parsedColorSpace\" argument.'\n );\n }\n let csName, csRef;\n if (cacheKey instanceof Ref) {\n csRef = cacheKey;\n\n // If parsing succeeded, we know that this call cannot throw.\n cacheKey = xref.fetch(cacheKey);\n }\n if (cacheKey instanceof Name) {\n csName = cacheKey.name;\n }\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n }\n }\n\n static getCached(cacheKey, xref, localColorSpaceCache) {\n if (!localColorSpaceCache) {\n throw new Error(\n 'ColorSpace.getCached - expected \"localColorSpaceCache\" argument.'\n );\n }\n if (cacheKey instanceof Ref) {\n const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n if (localColorSpace) {\n return localColorSpace;\n }\n\n try {\n cacheKey = xref.fetch(cacheKey);\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n // Any errors should be handled during parsing, rather than here.\n }\n }\n if (cacheKey instanceof Name) {\n const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n if (localColorSpace) {\n return localColorSpace;\n }\n }\n return null;\n }\n\n static async parseAsync({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n !this.getCached(cs, xref, localColorSpaceCache),\n \"Expected `ColorSpace.getCached` to have been manually checked \" +\n \"before calling `ColorSpace.parseAsync`.\"\n );\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n if (cachedColorSpace) {\n return cachedColorSpace;\n }\n const parsedColorSpace = this._parse(\n cs,\n xref,\n resources,\n pdfFunctionFactory\n );\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n return parsedColorSpace;\n }\n\n /**\n * @private\n */\n static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"Pattern\":\n return new PatternCS(/* baseCS = */ null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this._parse(\n resourcesCS,\n xref,\n resources,\n pdfFunctionFactory\n );\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.singletons.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.singletons.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.singletons.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n const alt = dict.get(\"Alternate\");\n if (alt) {\n const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n // Ensure that the number of components are correct,\n // and also (indirectly) that it is not a PatternCS.\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.singletons.gray;\n } else if (numComps === 3) {\n return this.singletons.rgb;\n } else if (numComps === 4) {\n return this.singletons.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n if (baseCS) {\n baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n }\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n const hiVal = xref.fetchIfRef(cs[2]) + 1;\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n }\n }\n throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n }\n\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode - Decode map (usually from an image).\n * @param {number} numComps - Number of components the color space has.\n */\n static isDefaultDecode(decode, numComps) {\n if (!Array.isArray(decode)) {\n return true;\n }\n if (numComps * 2 !== decode.length) {\n warn(\"The decode map is not the correct length\");\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n\n static get singletons() {\n return shadow(this, \"singletons\", {\n get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n },\n get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n },\n get cmyk() {\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n },\n });\n }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough =\n (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough\n ? dest\n : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(\n (inputLength * this.base.numComps) / this.numComps,\n alpha01\n );\n }\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.base = base;\n this.highVal = highVal;\n\n const length = base.numComps * highVal;\n this.lookup = new Uint8Array(length);\n\n if (lookup instanceof BaseStream) {\n const bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const numComps = this.base.numComps;\n const start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const base = this.base;\n const numComps = base.numComps;\n const outputDelta = base.getOutputLength(numComps, alpha01);\n const lookup = this.lookup;\n\n for (let i = 0; i < count; ++i) {\n const lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n }\n\n isDefaultDecode(decodeMap, bpc) {\n if (!Array.isArray(decodeMap)) {\n return true;\n }\n if (decodeMap.length !== 2) {\n warn(\"Decode map length is not correct\");\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n\n dest[destOffset] =\n 255 +\n c *\n (-4.387332384609988 * c +\n 54.48615194189176 * m +\n 18.82290502165302 * y +\n 212.25662451639585 * k +\n -285.2331026137004) +\n m *\n (1.7149763477362134 * m -\n 5.6096736904047315 * y +\n -17.873870861415444 * k -\n 5.497006427196366) +\n y *\n (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747);\n\n dest[destOffset + 1] =\n 255 +\n c *\n (8.841041422036149 * c +\n 60.118027045597366 * m +\n 6.871425592049007 * y +\n 31.159100130055922 * k +\n -79.2970844816548) +\n m *\n (-15.310361306967817 * m +\n 17.575251261109482 * y +\n 131.35250912493976 * k -\n 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578);\n\n dest[destOffset + 2] =\n 255 +\n c *\n (0.8842522430003296 * c +\n 8.078677503112928 * m +\n 30.89978309703729 * y -\n 0.23883238689178934 * k +\n -14.183576799673286) +\n m *\n (10.49593273432072 * m +\n 63.02378494754052 * y +\n 50.606957656360734 * k -\n 112.23884253719248) +\n y *\n (0.03296041114873217 * y +\n 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n // eslint-disable-next-line no-shadow\n class DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength / 4) * (3 + alpha01)) | 0;\n }\n }\n return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n const A = src[srcOffset] * scale;\n const AG = A ** cs.G;\n\n // Computes L as per spec. ( = cs.YW * AG )\n // Except if other than default BlackPoint values are used.\n const L = cs.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n // eslint-disable-next-line no-shadow\n class CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalGray\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n\n // Translate arguments to spec variables.\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n this.G = gamma;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(\n `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n `ZB: ${this.ZB}, only default values are supported.`\n );\n }\n\n if (this.G < 1) {\n info(\n `Invalid Gamma: ${this.G} for ${this.name}, ` +\n \"falling back to default.\"\n );\n this.G = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n }\n }\n return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n // prettier-ignore\n const BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n // prettier-ignore\n const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n // prettier-ignore\n const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n const tempNormalizeMatrix = new Float32Array(3);\n const tempConvertMatrix1 = new Float32Array(3);\n const tempConvertMatrix2 = new Float32Array(3);\n\n const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n\n result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n // Optimization:\n // If color is close enough to 1, skip calling the following transform\n // since calling Math.pow is expensive. If color is larger than\n // the threshold, the final result is larger than 254.5 since\n // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n // 254.50000003134699\n if (color >= 0.99554525) {\n return 1;\n }\n return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (\n sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0\n ) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n const zeroDecodeL = decodeL(0);\n\n const X_DST = zeroDecodeL;\n const X_SRC = decodeL(sourceBlackPoint[0]);\n\n const Y_DST = zeroDecodeL;\n const Y_SRC = decodeL(sourceBlackPoint[1]);\n\n const Z_DST = zeroDecodeL;\n const Z_SRC = decodeL(sourceBlackPoint[2]);\n\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n const A = adjustToRange(0, 1, src[srcOffset] * scale);\n const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n const AGR = A === 1 ? 1 : A ** cs.GR;\n const BGG = B === 1 ? 1 : B ** cs.GG;\n const CGB = C === 1 ? 1 : C ** cs.GB;\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n const XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = tempConvertMatrix2;\n\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n const XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n const XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n const SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class CalRGBCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalRGB\"\n );\n }\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Translate arguments to spec variables.\n const XW = whitePoint[0];\n const YW = whitePoint[1];\n const ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n\n const XB = blackPoint[0];\n const YB = blackPoint[1];\n const ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}` +\n \", no fallback available\"\n );\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(\n `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n \"falling back to default.\"\n );\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(\n `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n `${this.name}, falling back to default.`\n );\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n }\n return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n // Function g(x) from spec\n function fn_g(x) {\n let result;\n if (x >= 6 / 29) {\n result = x ** 3;\n } else {\n result = (108 / 841) * (x - 4 / 29);\n }\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + (value * (high2 - low2)) / high1;\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n if (as > cs.amax) {\n as = cs.amax;\n } else if (as < cs.amin) {\n as = cs.amin;\n }\n if (bs > cs.bmax) {\n bs = cs.bmax;\n } else if (bs < cs.bmin) {\n bs = cs.bmin;\n }\n\n // Computes intermediate variables X,Y,Z as per spec\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n\n const X = cs.XW * fn_g(L);\n const Y = cs.YW * fn_g(M);\n const Z = cs.ZW * fn_g(N);\n\n let r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (cs.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n // Convert the color values to the [0,255] range (clamping is automatic).\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n // eslint-disable-next-line no-shadow\n class LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space Lab\"\n );\n }\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n\n // Translate args to spec variables\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n \"Invalid WhitePoint components, no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n getOutputLength(inputLength, alpha01) {\n return ((inputLength * (3 + alpha01)) / 3) | 0;\n }\n\n isDefaultDecode(decodeMap, bpc) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n }\n\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n }\n return LabCS;\n})();\n\nexport { ColorSpace };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-var */\n\nimport {\n AbortException,\n assert,\n CMapCompressionType,\n createPromiseCapability,\n FONT_IDENTITY_MATRIX,\n FormatError,\n IDENTITY_MATRIX,\n info,\n isArrayEqual,\n OPS,\n shadow,\n stringToPDFString,\n TextRenderingMode,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { CMapFactory, IdentityCMap } from \"./cmap.js\";\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \"./primitives.js\";\nimport { ErrorFont, Font } from \"./fonts.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getFontNameToFileMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSymbolsFonts,\n} from \"./standard_fonts.js\";\nimport { getTilingPatternIR, Pattern } from \"./pattern.js\";\nimport { getXfaFontDict, getXfaFontName } from \"./xfa_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { isPDFFunction, PDFFunctionFactory } from \"./function.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n LocalColorSpaceCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n} from \"./image_utils.js\";\nimport { NullStream, Stream } from \"./stream.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { bidi } from \"./bidi.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FontFlags } from \"./fonts_utils.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { getMetrics } from \"./metrics.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\nimport { OperatorList } from \"./operator_list.js\";\nimport { PDFImage } from \"./image.js\";\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n maxImageSize: -1,\n disableFontFace: false,\n ignoreErrors: false,\n isEvalSupported: true,\n isOffscreenCanvasSupported: true,\n fontExtraProperties: false,\n useSystemFonts: true,\n cMapUrl: null,\n standardFontDataUrl: null,\n});\n\nconst PatternType = {\n TILING: 1,\n SHADING: 2,\n};\n\n// Optionally avoid sending individual, or very few, text chunks to reduce\n// `postMessage` overhead with ReadableStream (see issue 13962).\n//\n// PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\n// in `enqueueChunk`), since that would cause streaming of textContent to become\n// essentially useless in practice by sending all (or most) chunks at once.\n// Also, a too large value would (indirectly) affect the main-thread `textLayer`\n// building negatively by forcing all textContent to be handled at once, which\n// could easily end up hurting *overall* performance (e.g. rendering as well).\nconst TEXT_CHUNK_BATCH_SIZE = 10;\n\nconst deferred = Promise.resolve();\n\n// Convert PDF blend mode names to HTML5 blend mode names.\nfunction normalizeBlendMode(value, parsingArray = false) {\n if (Array.isArray(value)) {\n // Use the first *supported* BM value in the Array (fixes issue11279.pdf).\n for (const val of value) {\n const maybeBM = normalizeBlendMode(val, /* parsingArray = */ true);\n if (maybeBM) {\n return maybeBM;\n }\n }\n warn(`Unsupported blend mode Array: ${value}`);\n return \"source-over\";\n }\n\n if (!(value instanceof Name)) {\n if (parsingArray) {\n return null;\n }\n return \"source-over\";\n }\n switch (value.name) {\n case \"Normal\":\n case \"Compatible\":\n return \"source-over\";\n case \"Multiply\":\n return \"multiply\";\n case \"Screen\":\n return \"screen\";\n case \"Overlay\":\n return \"overlay\";\n case \"Darken\":\n return \"darken\";\n case \"Lighten\":\n return \"lighten\";\n case \"ColorDodge\":\n return \"color-dodge\";\n case \"ColorBurn\":\n return \"color-burn\";\n case \"HardLight\":\n return \"hard-light\";\n case \"SoftLight\":\n return \"soft-light\";\n case \"Difference\":\n return \"difference\";\n case \"Exclusion\":\n return \"exclusion\";\n case \"Hue\":\n return \"hue\";\n case \"Saturation\":\n return \"saturation\";\n case \"Color\":\n return \"color\";\n case \"Luminosity\":\n return \"luminosity\";\n }\n if (parsingArray) {\n return null;\n }\n warn(`Unsupported blend mode: ${value.name}`);\n return \"source-over\";\n}\n\nfunction incrementCachedImageMaskCount(data) {\n if (\n data.fn === OPS.paintImageMaskXObject &&\n data.args[0] &&\n data.args[0].count > 0\n ) {\n data.args[0].count++;\n }\n}\n\n// Trying to minimize Date.now() usage and check every 100 time.\nclass TimeSlotManager {\n static get TIME_SLOT_DURATION_MS() {\n return shadow(this, \"TIME_SLOT_DURATION_MS\", 20);\n }\n\n static get CHECK_TIME_EVERY() {\n return shadow(this, \"CHECK_TIME_EVERY\", 100);\n }\n\n constructor() {\n this.reset();\n }\n\n check() {\n if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n }\n\n reset() {\n this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n this.checked = 0;\n }\n}\n\nclass PartialEvaluator {\n constructor({\n xref,\n handler,\n pageIndex,\n idFactory,\n fontCache,\n builtInCMapCache,\n standardFontDataCache,\n globalImageCache,\n options = null,\n }) {\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.standardFontDataCache = standardFontDataCache;\n this.globalImageCache = globalImageCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n this.parsingType3Font = false;\n\n this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n }\n\n /**\n * Since Functions are only cached (locally) by reference, we can share one\n * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\n */\n get _pdfFunctionFactory() {\n const pdfFunctionFactory = new PDFFunctionFactory({\n xref: this.xref,\n isEvalSupported: this.options.isEvalSupported,\n });\n return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n }\n\n clone(newOptions = null) {\n const newEvaluator = Object.create(this);\n newEvaluator.options = Object.assign(\n Object.create(null),\n this.options,\n newOptions\n );\n return newEvaluator;\n }\n\n hasBlendModes(resources, nonBlendModesSet) {\n if (!(resources instanceof Dict)) {\n return false;\n }\n if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n return false;\n }\n\n const processed = new RefSet(nonBlendModesSet);\n if (resources.objId) {\n processed.put(resources.objId);\n }\n\n const nodes = [resources],\n xref = this.xref;\n while (nodes.length) {\n const node = nodes.shift();\n // First check the current resources for blend modes.\n const graphicStates = node.get(\"ExtGState\");\n if (graphicStates instanceof Dict) {\n for (let graphicState of graphicStates.getRawValues()) {\n if (graphicState instanceof Ref) {\n if (processed.has(graphicState)) {\n continue; // The ExtGState has already been processed.\n }\n try {\n graphicState = xref.fetch(graphicState);\n } catch (ex) {\n // Avoid parsing a corrupt ExtGState more than once.\n processed.put(graphicState);\n\n info(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n continue;\n }\n }\n if (!(graphicState instanceof Dict)) {\n continue;\n }\n if (graphicState.objId) {\n processed.put(graphicState.objId);\n }\n\n const bm = graphicState.get(\"BM\");\n if (bm instanceof Name) {\n if (bm.name !== \"Normal\") {\n return true;\n }\n continue;\n }\n if (bm !== undefined && Array.isArray(bm)) {\n for (const element of bm) {\n if (element instanceof Name && element.name !== \"Normal\") {\n return true;\n }\n }\n }\n }\n }\n // Descend into the XObjects to look for more resources and blend modes.\n const xObjects = node.get(\"XObject\");\n if (!(xObjects instanceof Dict)) {\n continue;\n }\n for (let xObject of xObjects.getRawValues()) {\n if (xObject instanceof Ref) {\n if (processed.has(xObject)) {\n // The XObject has already been processed, and by avoiding a\n // redundant `xref.fetch` we can *significantly* reduce the load\n // time for badly generated PDF files (fixes issue6961.pdf).\n continue;\n }\n try {\n xObject = xref.fetch(xObject);\n } catch (ex) {\n // Avoid parsing a corrupt XObject more than once.\n processed.put(xObject);\n\n info(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n continue;\n }\n }\n if (!(xObject instanceof BaseStream)) {\n continue;\n }\n if (xObject.dict.objId) {\n processed.put(xObject.dict.objId);\n }\n const xResources = xObject.dict.get(\"Resources\");\n if (!(xResources instanceof Dict)) {\n continue;\n }\n // Checking objId to detect an infinite loop.\n if (xResources.objId && processed.has(xResources.objId)) {\n continue;\n }\n\n nodes.push(xResources);\n if (xResources.objId) {\n processed.put(xResources.objId);\n }\n }\n }\n\n // When no blend modes exist, there's no need re-fetch/re-parse any of the\n // processed `Ref`s again for subsequent pages. This helps reduce redundant\n // `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\n for (const ref of processed) {\n nonBlendModesSet.put(ref);\n }\n return false;\n }\n\n async fetchBuiltInCMap(name) {\n const cachedData = this.builtInCMapCache.get(name);\n if (cachedData) {\n return cachedData;\n }\n let data;\n\n if (this.options.cMapUrl !== null) {\n // Only compressed CMaps are (currently) supported here.\n const url = `${this.options.cMapUrl}${name}.bcmap`;\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n data = {\n cMapData: new Uint8Array(await response.arrayBuffer()),\n compressionType: CMapCompressionType.BINARY,\n };\n } else {\n // Get the data on the main-thread instead.\n data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", { name });\n }\n\n if (data.compressionType !== CMapCompressionType.NONE) {\n // Given the size of uncompressed CMaps, only cache compressed ones.\n this.builtInCMapCache.set(name, data);\n }\n return data;\n }\n\n async fetchStandardFontData(name) {\n const cachedData = this.standardFontDataCache.get(name);\n if (cachedData) {\n return new Stream(cachedData);\n }\n\n // The symbol fonts are not consistent across platforms, always load the\n // standard font data for them.\n if (\n this.options.useSystemFonts &&\n name !== \"Symbol\" &&\n name !== \"ZapfDingbats\"\n ) {\n return null;\n }\n\n const standardFontNameToFileName = getFontNameToFileMap(),\n filename = standardFontNameToFileName[name];\n let data;\n\n if (this.options.standardFontDataUrl !== null) {\n const url = `${this.options.standardFontDataUrl}${filename}`;\n const response = await fetch(url);\n if (!response.ok) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n } else {\n data = await response.arrayBuffer();\n }\n } else {\n // Get the data on the main-thread instead.\n try {\n data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n filename,\n });\n } catch (e) {\n warn(\n `fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`\n );\n }\n }\n\n if (!data) {\n return null;\n }\n // Cache the \"raw\" standard font data, to avoid fetching it repeatedly\n // (see e.g. issue 11399).\n this.standardFontDataCache.set(name, data);\n\n return new Stream(data);\n }\n\n async buildFormXObject(\n resources,\n xobj,\n smask,\n operatorList,\n task,\n initialState,\n localColorSpaceCache\n ) {\n const dict = xobj.dict;\n const matrix = dict.getArray(\"Matrix\");\n let bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n bbox = Util.normalizeRect(bbox);\n } else {\n bbox = null;\n }\n\n let optionalContent, groupOptions;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n const group = dict.get(\"Group\");\n if (group) {\n groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n const groupSubtype = group.get(\"S\");\n let colorSpace = null;\n if (isName(groupSubtype, \"Transparency\")) {\n groupOptions.isolated = group.get(\"I\") || false;\n groupOptions.knockout = group.get(\"K\") || false;\n if (group.has(\"CS\")) {\n const cs = group.getRaw(\"CS\");\n\n const cachedColorSpace = ColorSpace.getCached(\n cs,\n this.xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n colorSpace = cachedColorSpace;\n } else {\n colorSpace = await this.parseColorSpace({\n cs,\n resources,\n localColorSpaceCache,\n });\n }\n }\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n\n // If it's a group, a new canvas will be created that is the size of the\n // bounding box and translated to the correct position so we don't need to\n // apply the bounding box to it.\n const args = group ? [matrix, null] : [matrix, bbox];\n operatorList.addOp(OPS.paintFormXObjectBegin, args);\n\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get(\"Resources\") || resources,\n operatorList,\n initialState,\n }).then(function () {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n\n if (optionalContent !== undefined) {\n operatorList.addOp(OPS.endMarkedContent, []);\n }\n });\n }\n\n _sendImgData(objId, imgData, cacheGlobally = false) {\n const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\n\n if (this.parsingType3Font || cacheGlobally) {\n return this.handler.send(\n \"commonobj\",\n [objId, \"Image\", imgData],\n transfers\n );\n }\n return this.handler.send(\n \"obj\",\n [objId, this.pageIndex, \"Image\", imgData],\n transfers\n );\n }\n\n async buildPaintImageXObject({\n resources,\n image,\n isInline = false,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n }) {\n const dict = image.dict;\n const imageRef = dict.objId;\n const w = dict.get(\"W\", \"Width\");\n const h = dict.get(\"H\", \"Height\");\n\n if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n warn(\"Image dimensions are missing, or not numbers.\");\n return;\n }\n const maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n const msg = \"Image exceeded maximum allowed size and was removed.\";\n\n if (this.options.ignoreErrors) {\n warn(msg);\n return;\n }\n throw new Error(msg);\n }\n\n let optionalContent;\n if (dict.has(\"OC\")) {\n optionalContent = await this.parseMarkedContentProps(\n dict.get(\"OC\"),\n resources\n );\n }\n\n const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n let imgData, args;\n if (imageMask) {\n // This depends on a tmpCanvas being filled with the\n // current fillStyle, such that processing the pixel\n // data can't be done here. Instead of creating a\n // complete PDFImage, only read the information needed\n // for later.\n const interpolate = dict.get(\"I\", \"Interpolate\");\n const bitStrideLength = (w + 7) >> 3;\n const imgArray = image.getBytes(bitStrideLength * h);\n const decode = dict.getArray(\"D\", \"Decode\");\n\n if (this.parsingType3Font) {\n imgData = PDFImage.createRawMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n });\n\n imgData.cached = !!cacheKey;\n args = [imgData];\n\n operatorList.addImageOps(\n OPS.paintImageMaskXObject,\n args,\n optionalContent\n );\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n optionalContent,\n });\n }\n return;\n }\n\n imgData = PDFImage.createMask({\n imgArray,\n width: w,\n height: h,\n imageIsFromDecodeStream: image instanceof DecodeStream,\n inverseDecode: !!decode && decode[0] > 0,\n interpolate,\n isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported,\n });\n\n if (imgData.isSingleOpaquePixel) {\n // Handles special case of mainly LaTeX documents which use image\n // masks to draw lines with the current fill style.\n operatorList.addImageOps(\n OPS.paintSolidColorImageMask,\n [],\n optionalContent\n );\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintSolidColorImageMask,\n args: [],\n optionalContent,\n });\n }\n return;\n }\n\n const objId = `mask_${this.idFactory.createObjId()}`;\n operatorList.addDependency(objId);\n this._sendImgData(objId, imgData);\n\n args = [\n {\n data: objId,\n width: imgData.width,\n height: imgData.height,\n interpolate: imgData.interpolate,\n count: 1,\n },\n ];\n operatorList.addImageOps(\n OPS.paintImageMaskXObject,\n args,\n optionalContent\n );\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageMaskXObject,\n args,\n optionalContent,\n });\n }\n return;\n }\n\n const softMask = dict.get(\"SM\", \"SMask\") || false;\n const mask = dict.get(\"Mask\") || false;\n\n const SMALL_IMAGE_DIMENSIONS = 200;\n // Inlining small images into the queue as RGB data\n if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n const imageObj = new PDFImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n });\n // We force the use of RGBA_32BPP images here, because we can't handle\n // any other kind.\n imgData = imageObj.createImageData(/* forceRGBA = */ true);\n operatorList.addImageOps(\n OPS.paintInlineImageXObject,\n [imgData],\n optionalContent\n );\n return;\n }\n\n // If there is no imageMask, create the PDFImage and a lot\n // of image processing can be done here.\n let objId = `img_${this.idFactory.createObjId()}`,\n cacheGlobally = false;\n\n if (this.parsingType3Font) {\n objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n } else if (imageRef) {\n cacheGlobally = this.globalImageCache.shouldCache(\n imageRef,\n this.pageIndex\n );\n\n if (cacheGlobally) {\n objId = `${this.idFactory.getDocId()}_${objId}`;\n }\n }\n\n // Ensure that the dependency is added before the image is decoded.\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n PDFImage.buildImage({\n xref: this.xref,\n res: resources,\n image,\n isInline,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n })\n .then(imageObj => {\n imgData = imageObj.createImageData(/* forceRGBA = */ false);\n\n if (cacheKey && imageRef && cacheGlobally) {\n this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n }\n return this._sendImgData(objId, imgData, cacheGlobally);\n })\n .catch(reason => {\n warn(`Unable to decode image \"${objId}\": \"${reason}\".`);\n\n return this._sendImgData(objId, /* imgData = */ null, cacheGlobally);\n });\n\n operatorList.addImageOps(OPS.paintImageXObject, args, optionalContent);\n\n if (cacheKey) {\n localImageCache.set(cacheKey, imageRef, {\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n });\n\n if (imageRef) {\n assert(!isInline, \"Cannot cache an inline image globally.\");\n this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n if (cacheGlobally) {\n this.globalImageCache.setData(imageRef, {\n objId,\n fn: OPS.paintImageXObject,\n args,\n optionalContent,\n byteSize: 0, // Temporary entry, note `addByteSize` above.\n });\n }\n }\n }\n }\n\n handleSMask(\n smask,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n ) {\n const smaskContent = smask.get(\"G\");\n const smaskOptions = {\n subtype: smask.get(\"S\").name,\n backdrop: smask.get(\"BC\"),\n };\n\n // The SMask might have a alpha/luminosity value transfer function --\n // we will build a map of integer values in range 0..255 to be fast.\n const transferObj = smask.get(\"TR\");\n if (isPDFFunction(transferObj)) {\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256);\n const tmp = new Float32Array(1);\n for (let i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = (tmp[0] * 255) | 0;\n }\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(\n resources,\n smaskContent,\n smaskOptions,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n );\n }\n\n handleTransferFunction(tr) {\n let transferArray;\n if (Array.isArray(tr)) {\n transferArray = tr;\n } else if (isPDFFunction(tr)) {\n transferArray = [tr];\n } else {\n return null; // Not a valid transfer function entry.\n }\n\n const transferMaps = [];\n let numFns = 0,\n numEffectfulFns = 0;\n for (const entry of transferArray) {\n const transferObj = this.xref.fetchIfRef(entry);\n numFns++;\n\n if (isName(transferObj, \"Identity\")) {\n transferMaps.push(null);\n continue;\n } else if (!isPDFFunction(transferObj)) {\n return null; // Not a valid transfer function object.\n }\n\n const transferFn = this._pdfFunctionFactory.create(transferObj);\n const transferMap = new Uint8Array(256),\n tmp = new Float32Array(1);\n for (let j = 0; j < 256; j++) {\n tmp[0] = j / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[j] = (tmp[0] * 255) | 0;\n }\n transferMaps.push(transferMap);\n numEffectfulFns++;\n }\n\n if (!(numFns === 1 || numFns === 4)) {\n return null; // Only 1 or 4 functions are supported, by the specification.\n }\n if (numEffectfulFns === 0) {\n return null; // Only /Identity transfer functions found, which are no-ops.\n }\n return transferMaps;\n }\n\n handleTilingType(\n fn,\n color,\n resources,\n pattern,\n patternDict,\n operatorList,\n task,\n localTilingPatternCache\n ) {\n // Create an IR of the pattern code.\n const tilingOpList = new OperatorList();\n // Merge the available resources, to prevent issues when the patternDict\n // is missing some /Resources entries (fixes issue6541.pdf).\n const patternResources = Dict.merge({\n xref: this.xref,\n dictArray: [patternDict.get(\"Resources\"), resources],\n });\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n })\n .then(function () {\n const operatorListIR = tilingOpList.getIR();\n const tilingPatternIR = getTilingPatternIR(\n operatorListIR,\n patternDict,\n color\n );\n // Add the dependencies to the parent operator list so they are\n // resolved before the sub operator list is executed synchronously.\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n\n if (patternDict.objId) {\n localTilingPatternCache.set(/* name = */ null, patternDict.objId, {\n operatorListIR,\n dict: patternDict,\n });\n }\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error(s) in the TilingPattern -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorTilingPattern,\n });\n }\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n }\n\n handleSetFont(\n resources,\n fontArgs,\n fontRef,\n operatorList,\n task,\n state,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const fontName =\n fontArgs && fontArgs[0] instanceof Name ? fontArgs[0].name : null;\n\n return this.loadFont(\n fontName,\n fontRef,\n resources,\n fallbackFontDict,\n cssFontInfo\n )\n .then(translated => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(this, resources, task)\n .then(function () {\n // Add the dependencies to the parent operatorList so they are\n // resolved before Type3 operatorLists are executed synchronously.\n operatorList.addDependencies(translated.type3Dependencies);\n\n return translated;\n })\n .catch(reason => {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error in the font data -- sending unsupported feature\n // notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontLoadType3,\n });\n }\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Type3 font load error: ${reason}`),\n dict: translated.font,\n evaluatorOptions: this.options,\n });\n });\n })\n .then(translated => {\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n });\n }\n\n handleText(chars, state) {\n const font = state.font;\n const glyphs = font.charsToGlyphs(chars);\n\n if (font.data) {\n const isAddToPathSet = !!(\n state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n if (\n isAddToPathSet ||\n state.fillColorSpace.name === \"Pattern\" ||\n font.disableFontFace ||\n this.options.disableFontFace\n ) {\n PartialEvaluator.buildFontPaths(\n font,\n glyphs,\n this.handler,\n this.options\n );\n }\n }\n return glyphs;\n }\n\n ensureStateFont(state) {\n if (state.font) {\n return;\n }\n const reason = new FormatError(\n \"Missing setFont (Tf) operator before text rendering operator.\"\n );\n\n if (this.options.ignoreErrors) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Missing setFont operator before text rendering operator -- sending\n // unsupported feature notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontState,\n });\n }\n warn(`ensureStateFont: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n\n async setGState({\n resources,\n gState,\n operatorList,\n cacheKey,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n }) {\n const gStateRef = gState.objId;\n let isSimpleGState = true;\n // This array holds the converted/processed state data.\n const gStateObj = [];\n let promise = Promise.resolve();\n for (const key of gState.getKeys()) {\n const value = gState.get(key);\n switch (key) {\n case \"Type\":\n break;\n case \"LW\":\n case \"LC\":\n case \"LJ\":\n case \"ML\":\n case \"D\":\n case \"RI\":\n case \"FL\":\n case \"CA\":\n case \"ca\":\n gStateObj.push([key, value]);\n break;\n case \"Font\":\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSetFont(\n resources,\n null,\n value[0],\n operatorList,\n task,\n stateManager.state\n ).then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n case \"BM\":\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case \"SMask\":\n if (isName(value, \"None\")) {\n gStateObj.push([key, false]);\n break;\n }\n if (value instanceof Dict) {\n isSimpleGState = false;\n\n promise = promise.then(() => {\n return this.handleSMask(\n value,\n resources,\n operatorList,\n task,\n stateManager,\n localColorSpaceCache\n );\n });\n gStateObj.push([key, true]);\n } else {\n warn(\"Unsupported SMask type\");\n }\n break;\n case \"TR\":\n const transferMaps = this.handleTransferFunction(value);\n gStateObj.push([key, transferMaps]);\n break;\n // Only generate info log messages for the following since\n // they are unlikely to have a big impact on the rendering.\n case \"OP\":\n case \"op\":\n case \"OPM\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n case \"TR2\":\n case \"HT\":\n case \"SM\":\n case \"SA\":\n case \"AIS\":\n case \"TK\":\n // TODO implement these operators.\n info(\"graphic state operator \" + key);\n break;\n default:\n info(\"Unknown graphic state operator \" + key);\n break;\n }\n }\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n\n if (isSimpleGState) {\n localGStateCache.set(cacheKey, gStateRef, gStateObj);\n }\n });\n }\n\n loadFont(\n fontName,\n font,\n resources,\n fallbackFontDict = null,\n cssFontInfo = null\n ) {\n const errorFont = async () => {\n return new TranslatedFont({\n loadedName: \"g_font_error\",\n font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n dict: font,\n evaluatorOptions: this.options,\n });\n };\n\n const xref = this.xref;\n let fontRef;\n if (font) {\n // Loading by ref.\n if (font instanceof Ref) {\n fontRef = font;\n }\n } else {\n // Loading by name.\n const fontRes = resources.get(\"Font\");\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n }\n }\n if (!fontRef) {\n const partialMsg = `Font \"${\n fontName || (font && font.toString())\n }\" is not available`;\n\n if (!this.options.ignoreErrors && !this.parsingType3Font) {\n warn(`${partialMsg}.`);\n return errorFont();\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Font not found -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontMissing,\n });\n }\n warn(`${partialMsg} -- attempting to fallback to a default font.`);\n\n // Falling back to a default font to avoid completely broken rendering,\n // but note that there're no guarantees that things will look \"correct\".\n if (fallbackFontDict) {\n fontRef = fallbackFontDict;\n } else {\n fontRef = PartialEvaluator.fallbackFontDict;\n }\n }\n\n if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {\n return errorFont();\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n if (!(font instanceof Dict)) {\n return errorFont();\n }\n\n // We are holding `font.cacheKey` references only for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n return this.fontCache.get(font.cacheKey);\n }\n\n const fontCapability = createPromiseCapability();\n\n let preEvaluatedFont;\n try {\n preEvaluatedFont = this.preEvaluateFont(font);\n preEvaluatedFont.cssFontInfo = cssFontInfo;\n } catch (reason) {\n warn(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n return errorFont();\n }\n const { descriptor, hash } = preEvaluatedFont;\n\n const fontRefIsRef = fontRef instanceof Ref;\n let fontID;\n if (fontRefIsRef) {\n fontID = `f${fontRef.toString()}`;\n }\n\n if (hash && descriptor instanceof Dict) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n const fontAliases = descriptor.fontAliases;\n\n if (fontAliases[hash]) {\n const aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: this.idFactory.createFontId(),\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n }\n\n // Workaround for bad PDF generators that reference fonts incorrectly,\n // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n // In this case we cannot put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not possible to use a `Dict` as a key.\n //\n // However, if we don't cache the font it's not possible to remove it\n // when `cleanup` is triggered from the API, which causes issues on\n // subsequent rendering operations (see issue7403.pdf) and would force us\n // to unnecessarily load the same fonts over and over.\n //\n // Instead, we cheat a bit by using a modified `fontID` as a key in\n // `this.fontCache`, to allow the font to be cached.\n // NOTE: This works because `RefSetCache` calls `toString()` on provided\n // keys. Also, since `fontRef` is used when getting cached fonts,\n // we'll not accidentally match fonts cached with the `fontID`.\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createFontId();\n }\n font.cacheKey = `cacheKey_${fontID}`;\n this.fontCache.put(font.cacheKey, fontCapability.promise);\n }\n assert(\n fontID && fontID.startsWith(\"f\"),\n 'The \"fontID\" must be (correctly) defined.'\n );\n\n // Keep track of each font we translated so the caller can\n // load them asynchronously before calling display on a page.\n font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n\n this.translateFont(preEvaluatedFont)\n .then(translatedFont => {\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: translatedFont,\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n })\n .catch(reason => {\n // TODO fontCapability.reject?\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontTranslate,\n });\n }\n warn(`loadFont - translateFont failed: \"${reason}\".`);\n\n fontCapability.resolve(\n new TranslatedFont({\n loadedName: font.loadedName,\n font: new ErrorFont(\n reason instanceof Error ? reason.message : reason\n ),\n dict: font,\n evaluatorOptions: this.options,\n })\n );\n });\n return fontCapability.promise;\n }\n\n buildPath(operatorList, fn, args, parsingText = false) {\n const lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n if (\n lastIndex < 0 ||\n operatorList.fnArray[lastIndex] !== OPS.constructPath\n ) {\n // Handle corrupt PDF documents that contains path operators inside of\n // text objects, which may shift subsequent text, by enclosing the path\n // operator in save/restore operators (fixes issue10542_reduced.pdf).\n //\n // Note that this will effectively disable the optimization in the\n // `else` branch below, but given that this type of corruption is\n // *extremely* rare that shouldn't really matter much in practice.\n if (parsingText) {\n warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n operatorList.addOp(OPS.save, null);\n }\n\n let minMax;\n switch (fn) {\n case OPS.rectangle:\n const x = args[0] + args[2];\n const y = args[1] + args[3];\n minMax = [\n Math.min(args[0], x),\n Math.max(args[0], x),\n Math.min(args[1], y),\n Math.max(args[1], y),\n ];\n break;\n case OPS.moveTo:\n case OPS.lineTo:\n minMax = [args[0], args[0], args[1], args[1]];\n break;\n default:\n minMax = [Infinity, -Infinity, Infinity, -Infinity];\n break;\n }\n operatorList.addOp(OPS.constructPath, [[fn], args, minMax]);\n\n if (parsingText) {\n operatorList.addOp(OPS.restore, null);\n }\n } else {\n const opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n opArgs[1].push(...args);\n const minMax = opArgs[2];\n\n // Compute min/max in the worker instead of the main thread.\n // If the current matrix (when drawing) is a scaling one\n // then min/max can be easily computed in using those values.\n // Only rectangle, lineTo and moveTo are handled here since\n // Bezier stuff requires to have the starting point.\n switch (fn) {\n case OPS.rectangle:\n const x = args[0] + args[2];\n const y = args[1] + args[3];\n minMax[0] = Math.min(minMax[0], args[0], x);\n minMax[1] = Math.max(minMax[1], args[0], x);\n minMax[2] = Math.min(minMax[2], args[1], y);\n minMax[3] = Math.max(minMax[3], args[1], y);\n break;\n case OPS.moveTo:\n case OPS.lineTo:\n minMax[0] = Math.min(minMax[0], args[0]);\n minMax[1] = Math.max(minMax[1], args[0]);\n minMax[2] = Math.min(minMax[2], args[1]);\n minMax[3] = Math.max(minMax[3], args[1]);\n break;\n }\n }\n }\n\n parseColorSpace({ cs, resources, localColorSpaceCache }) {\n return ColorSpace.parseAsync({\n cs,\n xref: this.xref,\n resources,\n pdfFunctionFactory: this._pdfFunctionFactory,\n localColorSpaceCache,\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error(s) in the ColorSpace -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorColorSpace,\n });\n }\n warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n return null;\n }\n throw reason;\n });\n }\n\n parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n }) {\n // Shadings and patterns may be referenced by the same name but the resource\n // dictionary could be different so we can't use the name for the cache key.\n let id = localShadingPatternCache.get(shading);\n if (!id) {\n var shadingFill = Pattern.parseShading(\n shading,\n this.xref,\n resources,\n this.handler,\n this._pdfFunctionFactory,\n localColorSpaceCache\n );\n const patternIR = shadingFill.getIR();\n id = `pattern_${this.idFactory.createObjId()}`;\n localShadingPatternCache.set(shading, id);\n this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n }\n return id;\n }\n\n handleColorN(\n operatorList,\n fn,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n ) {\n // compile tiling patterns\n const patternName = args.pop();\n // SCN/scn applies patterns along with normal colors\n if (patternName instanceof Name) {\n const rawPattern = patterns.getRaw(patternName.name);\n\n const localTilingPattern =\n rawPattern instanceof Ref &&\n localTilingPatternCache.getByRef(rawPattern);\n if (localTilingPattern) {\n try {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n const tilingPatternIR = getTilingPatternIR(\n localTilingPattern.operatorListIR,\n localTilingPattern.dict,\n color\n );\n operatorList.addOp(fn, tilingPatternIR);\n return undefined;\n } catch (ex) {\n // Handle any errors during normal TilingPattern parsing.\n }\n }\n\n const pattern = this.xref.fetchIfRef(rawPattern);\n if (pattern) {\n const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n const typeNum = dict.get(\"PatternType\");\n\n if (typeNum === PatternType.TILING) {\n const color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(\n fn,\n color,\n resources,\n pattern,\n dict,\n operatorList,\n task,\n localTilingPatternCache\n );\n } else if (typeNum === PatternType.SHADING) {\n const shading = dict.get(\"Shading\");\n const matrix = dict.getArray(\"Matrix\");\n const objId = this.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n return undefined;\n }\n throw new FormatError(`Unknown PatternType: ${typeNum}`);\n }\n }\n throw new FormatError(`Unknown PatternName: ${patternName}`);\n }\n\n _parseVisibilityExpression(array, nestingCounter, currentResult) {\n const MAX_NESTING = 10;\n if (++nestingCounter > MAX_NESTING) {\n warn(\"Visibility expression is too deeply nested\");\n return;\n }\n const length = array.length;\n const operator = this.xref.fetchIfRef(array[0]);\n if (length < 2 || !(operator instanceof Name)) {\n warn(\"Invalid visibility expression\");\n return;\n }\n switch (operator.name) {\n case \"And\":\n case \"Or\":\n case \"Not\":\n currentResult.push(operator.name);\n break;\n default:\n warn(`Invalid operator ${operator.name} in visibility expression`);\n return;\n }\n for (let i = 1; i < length; i++) {\n const raw = array[i];\n const object = this.xref.fetchIfRef(raw);\n if (Array.isArray(object)) {\n const nestedResult = [];\n currentResult.push(nestedResult);\n // Recursively parse a subarray.\n this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n } else if (raw instanceof Ref) {\n // Reference to an OCG dictionary.\n currentResult.push(raw.toString());\n }\n }\n }\n\n async parseMarkedContentProps(contentProperties, resources) {\n let optionalContent;\n if (contentProperties instanceof Name) {\n const properties = resources.get(\"Properties\");\n optionalContent = properties.get(contentProperties.name);\n } else if (contentProperties instanceof Dict) {\n optionalContent = contentProperties;\n } else {\n throw new FormatError(\"Optional content properties malformed.\");\n }\n\n const optionalContentType = optionalContent.get(\"Type\").name;\n if (optionalContentType === \"OCG\") {\n return {\n type: optionalContentType,\n id: optionalContent.objId,\n };\n } else if (optionalContentType === \"OCMD\") {\n const expression = optionalContent.get(\"VE\");\n if (Array.isArray(expression)) {\n const result = [];\n this._parseVisibilityExpression(expression, 0, result);\n if (result.length > 0) {\n return {\n type: \"OCMD\",\n expression: result,\n };\n }\n }\n\n const optionalContentGroups = optionalContent.get(\"OCGs\");\n if (\n Array.isArray(optionalContentGroups) ||\n optionalContentGroups instanceof Dict\n ) {\n const groupIds = [];\n if (Array.isArray(optionalContentGroups)) {\n for (const ocg of optionalContentGroups) {\n groupIds.push(ocg.toString());\n }\n } else {\n // Dictionary, just use the obj id.\n groupIds.push(optionalContentGroups.objId);\n }\n\n return {\n type: optionalContentType,\n ids: groupIds,\n policy:\n optionalContent.get(\"P\") instanceof Name\n ? optionalContent.get(\"P\").name\n : null,\n expression: null,\n };\n } else if (optionalContentGroups instanceof Ref) {\n return {\n type: optionalContentType,\n id: optionalContentGroups.toString(),\n };\n }\n }\n return null;\n }\n\n getOperatorList({\n stream,\n task,\n resources,\n operatorList,\n initialState = null,\n fallbackFontDict = null,\n }) {\n // Ensure that `resources`/`initialState` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n const self = this;\n const xref = this.xref;\n let parsingText = false;\n const localImageCache = new LocalImageCache();\n const localColorSpaceCache = new LocalColorSpaceCache();\n const localGStateCache = new LocalGStateCache();\n const localTilingPatternCache = new LocalTilingPatternCache();\n const localShadingPatternCache = new Map();\n\n const xobjs = resources.get(\"XObject\") || Dict.empty;\n const patterns = resources.get(\"Pattern\") || Dict.empty;\n const stateManager = new StateManager(initialState);\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n const timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n Promise.all([promise, operatorList.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop, i, ii, cs, name, isValidName;\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are used beyond this loop, so we\n // cannot reuse the same array on each iteration. Therefore we pass\n // in |null| as the initial value (see the comment on\n // EvaluatorPreprocessor_read() for why).\n operation.args = null;\n if (!preprocessor.read(operation)) {\n break;\n }\n let args = operation.args;\n let fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localImage = localImageCache.getByName(name);\n if (localImage) {\n operatorList.addImageOps(\n localImage.fn,\n localImage.args,\n localImage.optionalContent\n );\n\n incrementCachedImageMaskCount(localImage);\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n const localImage = localImageCache.getByRef(xobj);\n if (localImage) {\n operatorList.addImageOps(\n localImage.fn,\n localImage.args,\n localImage.optionalContent\n );\n\n incrementCachedImageMaskCount(localImage);\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n operatorList.addDependency(globalImage.objId);\n operatorList.addImageOps(\n globalImage.fn,\n globalImage.args,\n globalImage.optionalContent\n );\n\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name === \"Form\") {\n stateManager.save();\n self\n .buildFormXObject(\n resources,\n xobj,\n null,\n operatorList,\n task,\n stateManager.state.clone(),\n localColorSpaceCache\n )\n .then(function () {\n stateManager.restore();\n resolveXObject();\n }, rejectXObject);\n return;\n } else if (type.name === \"Image\") {\n self\n .buildPaintImageXObject({\n resources,\n image: xobj,\n operatorList,\n cacheKey: name,\n localImageCache,\n localColorSpaceCache,\n })\n .then(resolveXObject, rejectXObject);\n return;\n } else if (type.name === \"PS\") {\n // PostScript XObjects are unused when viewing documents.\n // See section 4.7.1 of Adobe's PDF reference.\n info(\"Ignored XObject subtype PS\");\n } else {\n throw new FormatError(\n `Unhandled XObject subtype ${type.name}`\n );\n }\n resolveXObject();\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"GENERIC\")\n ) {\n // Error(s) in the XObject -- sending unsupported feature\n // notification and allow rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorXObject,\n });\n }\n warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setFont:\n var fontSize = args[1];\n // eagerly collect all fonts\n next(\n self\n .handleSetFont(\n resources,\n args,\n null,\n operatorList,\n task,\n stateManager.state,\n fallbackFontDict\n )\n .then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n })\n );\n return;\n case OPS.beginText:\n parsingText = true;\n break;\n case OPS.endText:\n parsingText = false;\n break;\n case OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n if (cacheKey) {\n const localImage = localImageCache.getByName(cacheKey);\n if (localImage) {\n operatorList.addImageOps(\n localImage.fn,\n localImage.args,\n localImage.optionalContent\n );\n\n incrementCachedImageMaskCount(localImage);\n args = null;\n continue;\n }\n }\n next(\n self.buildPaintImageXObject({\n resources,\n image: args[0],\n isInline: true,\n operatorList,\n cacheKey,\n localImageCache,\n localColorSpaceCache,\n })\n );\n return;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n var combinedGlyphs = [];\n var state = stateManager.state;\n for (const arrItem of args[0]) {\n if (typeof arrItem === \"string\") {\n combinedGlyphs.push(...self.handleText(arrItem, state));\n } else if (typeof arrItem === \"number\") {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case OPS.setFillColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.fillColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.fillColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setStrokeColorSpace: {\n const cachedColorSpace = ColorSpace.getCached(\n args[0],\n xref,\n localColorSpaceCache\n );\n if (cachedColorSpace) {\n stateManager.state.strokeColorSpace = cachedColorSpace;\n continue;\n }\n\n next(\n self\n .parseColorSpace({\n cs: args[0],\n resources,\n localColorSpaceCache,\n })\n .then(function (colorSpace) {\n if (colorSpace) {\n stateManager.state.strokeColorSpace = colorSpace;\n }\n })\n );\n return;\n }\n case OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setFillColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n if (cs.name === \"Pattern\") {\n next(\n self.handleColorN(\n operatorList,\n OPS.setStrokeColorN,\n args,\n cs,\n patterns,\n resources,\n task,\n localColorSpaceCache,\n localTilingPatternCache,\n localShadingPatternCache\n )\n );\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n\n case OPS.shadingFill:\n var shadingRes = resources.get(\"Shading\");\n if (!shadingRes) {\n throw new FormatError(\"No shading resource found\");\n }\n\n var shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError(\"No shading object found\");\n }\n const patternId = self.parseShading({\n shading,\n resources,\n localColorSpaceCache,\n localShadingPatternCache,\n });\n args = [patternId];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName) {\n const localGStateObj = localGStateCache.getByName(name);\n if (localGStateObj) {\n if (localGStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [localGStateObj]);\n }\n args = null;\n continue;\n }\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n self\n .setGState({\n resources,\n gState,\n operatorList,\n cacheKey: name,\n task,\n stateManager,\n localGStateCache,\n localColorSpaceCache,\n })\n .then(resolveGState, rejectGState);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"GENERIC\")\n ) {\n // Error(s) in the ExtGState -- sending unsupported feature\n // notification and allow parsing/rendering to continue.\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorExtGState,\n });\n }\n warn(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n case OPS.rectangle:\n self.buildPath(operatorList, fn, args, parsingText);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginCompat:\n case OPS.endCompat:\n // Ignore operators where the corresponding handlers are known to\n // be no-op in CanvasGraphics (display/canvas.js). This prevents\n // serialization errors and is also a bit more efficient.\n // We could also try to serialize all objects in a general way,\n // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n // but doing so is meaningless without knowing the semantics.\n continue;\n case OPS.beginMarkedContentProps:\n if (!(args[0] instanceof Name)) {\n warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n continue;\n }\n if (args[0].name === \"OC\") {\n next(\n self\n .parseMarkedContentProps(args[1], resources)\n .then(data => {\n operatorList.addOp(OPS.beginMarkedContentProps, [\n \"OC\",\n data,\n ]);\n })\n .catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"GENERIC\")\n ) {\n self.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorMarkedContent,\n });\n }\n warn(\n `getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`\n );\n return;\n }\n throw reason;\n })\n );\n return;\n }\n // Other marked content types aren't supported yet.\n args = [\n args[0].name,\n args[1] instanceof Dict ? args[1].get(\"MCID\") : null,\n ];\n\n break;\n case OPS.beginMarkedContent:\n case OPS.endMarkedContent:\n default:\n // Note: Ignore the operator if it has `Dict` arguments, since\n // those are non-serializable, otherwise postMessage will throw\n // \"An object could not be cloned.\".\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof Dict) {\n break;\n }\n }\n if (i < ii) {\n warn(\"getOperatorList - ignoring operator: \" + fn);\n continue;\n }\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n // Some PDFs don't close all restores inside object/form.\n // Closing those for them.\n closePendingRestoreOPS();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error(s) in the OperatorList -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorOperatorList,\n });\n }\n warn(\n `getOperatorList - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n }\n\n getTextContent({\n stream,\n task,\n resources,\n stateManager = null,\n combineTextItems = false,\n includeMarkedContent = false,\n sink,\n seenStyles = new Set(),\n viewBox,\n markedContentData = null,\n }) {\n // Ensure that `resources`/`stateManager` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n\n if (includeMarkedContent) {\n markedContentData = markedContentData || { level: 0 };\n }\n\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n const textContentItem = {\n initialized: false,\n str: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n height: 0,\n vertical: false,\n prevTransform: null,\n textAdvanceScale: 0,\n spaceInFlowMin: 0,\n spaceInFlowMax: 0,\n trackingSpaceMin: Infinity,\n negativeSpaceMax: -Infinity,\n notASpace: -Infinity,\n transform: null,\n fontName: null,\n hasEOL: false,\n };\n\n // Use a circular buffer (length === 2) to save the last chars in the\n // text stream.\n // This implementation of the circular buffer is using a fixed array\n // and the position of the next element:\n // function addElement(x) {\n // buffer[pos] = x;\n // pos = (pos + 1) % buffer.length;\n // }\n // It's a way faster than:\n // function addElement(x) {\n // buffer.push(x);\n // buffer.shift();\n // }\n //\n // It's useful to know when we need to add a whitespace in the\n // text chunk.\n const twoLastChars = [\" \", \" \"];\n let twoLastCharsPos = 0;\n\n /**\n * Save the last char.\n * @param {string} char\n * @returns {boolean} true when the two last chars before adding the new one\n * are a non-whitespace followed by a whitespace.\n */\n function saveLastChar(char) {\n const nextPos = (twoLastCharsPos + 1) % 2;\n const ret =\n twoLastChars[twoLastCharsPos] !== \" \" && twoLastChars[nextPos] === \" \";\n twoLastChars[twoLastCharsPos] = char;\n twoLastCharsPos = nextPos;\n\n return ret;\n }\n\n function resetLastChars() {\n twoLastChars[0] = twoLastChars[1] = \" \";\n twoLastCharsPos = 0;\n }\n\n // Used in addFakeSpaces.\n\n // A white <= fontSize * TRACKING_SPACE_FACTOR is a tracking space\n // so it doesn't count as a space.\n const TRACKING_SPACE_FACTOR = 0.1;\n\n // When a white <= fontSize * NOT_A_SPACE_FACTOR, there is no space\n // even if one is present in the text stream.\n const NOT_A_SPACE_FACTOR = 0.03;\n\n // A negative white < fontSize * NEGATIVE_SPACE_FACTOR induces\n // a break (a new chunk of text is created).\n // It doesn't change anything when the text is copied but\n // it improves potential mismatch between text layer and canvas.\n const NEGATIVE_SPACE_FACTOR = -0.2;\n\n // A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\n // is a space which will be inserted in the current flow of words.\n // If the width is outside of this range then the flow is broken\n // (which means a new span in the text layer).\n // It's useful to adjust the best as possible the span in the layer\n // to what is displayed in the canvas.\n const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n\n const self = this;\n const xref = this.xref;\n const showSpacedTextBuffer = [];\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n let xobjs = null;\n const emptyXObjectCache = new LocalImageCache();\n const emptyGStateCache = new LocalGStateCache();\n\n const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n let textState;\n\n function getCurrentTextTransform() {\n // 9.4.4 Text Space Details\n const font = textState.font;\n const tsm = [\n textState.fontSize * textState.textHScale,\n 0,\n 0,\n textState.fontSize,\n 0,\n textState.textRise,\n ];\n\n if (\n font.isType3Font &&\n (textState.fontSize <= 1 || font.isCharBBox) &&\n !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\n ) {\n const glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n tsm[3] *= glyphHeight * textState.fontMatrix[3];\n }\n }\n\n return Util.transform(\n textState.ctm,\n Util.transform(textState.textMatrix, tsm)\n );\n }\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n const { font, loadedName } = textState;\n if (!seenStyles.has(loadedName)) {\n seenStyles.add(loadedName);\n\n textContent.styles[loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = loadedName;\n\n const trm = (textContentItem.transform = getCurrentTextTransform());\n if (!font.vertical) {\n textContentItem.width = textContentItem.totalWidth = 0;\n textContentItem.height = textContentItem.totalHeight = Math.hypot(\n trm[2],\n trm[3]\n );\n textContentItem.vertical = false;\n } else {\n textContentItem.width = textContentItem.totalWidth = Math.hypot(\n trm[0],\n trm[1]\n );\n textContentItem.height = textContentItem.totalHeight = 0;\n textContentItem.vertical = true;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n\n textContentItem.trackingSpaceMin =\n textState.fontSize * TRACKING_SPACE_FACTOR;\n textContentItem.notASpace = textState.fontSize * NOT_A_SPACE_FACTOR;\n textContentItem.negativeSpaceMax =\n textState.fontSize * NEGATIVE_SPACE_FACTOR;\n textContentItem.spaceInFlowMin =\n textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n textContentItem.spaceInFlowMax =\n textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n\n textContentItem.hasEOL = false;\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function updateAdvanceScale() {\n if (!textContentItem.initialized) {\n return;\n }\n\n const scaleLineX = Math.hypot(\n textState.textLineMatrix[0],\n textState.textLineMatrix[1]\n );\n const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n const scaleFactor = scaleCtmX * scaleLineX;\n if (scaleFactor === textContentItem.textAdvanceScale) {\n return;\n }\n\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n textContentItem.width = 0;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n textContentItem.height = 0;\n }\n\n textContentItem.textAdvanceScale = scaleFactor;\n }\n\n function runBidiTransform(textChunk) {\n const text = textChunk.str.join(\"\");\n const bidiResult = bidi(text, -1, textChunk.vertical);\n return {\n str: bidiResult.str,\n dir: bidiResult.dir,\n width: Math.abs(textChunk.totalWidth),\n height: Math.abs(textChunk.totalHeight),\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n hasEOL: textChunk.hasEOL,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self\n .loadFont(fontName, fontRef, resources)\n .then(function (translated) {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated\n .loadType3Data(self, resources, task)\n .catch(function () {\n // Ignore Type3-parsing errors, since we only use `loadType3Data`\n // here to ensure that we'll always obtain a useful /FontBBox.\n })\n .then(function () {\n return translated;\n });\n })\n .then(function (translated) {\n textState.loadedName = translated.loadedName;\n textState.font = translated.font;\n textState.fontMatrix =\n translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n });\n }\n\n function applyInverseRotation(x, y, matrix) {\n const scale = Math.hypot(matrix[0], matrix[1]);\n return [\n (matrix[0] * x + matrix[1] * y) / scale,\n (matrix[2] * x + matrix[3] * y) / scale,\n ];\n }\n\n function compareWithLastPosition() {\n const currentTransform = getCurrentTextTransform();\n let posX = currentTransform[4];\n let posY = currentTransform[5];\n\n const shiftedX = posX - viewBox[0];\n const shiftedY = posY - viewBox[1];\n\n if (\n shiftedX < 0 ||\n shiftedX > viewBox[2] ||\n shiftedY < 0 ||\n shiftedY > viewBox[3]\n ) {\n return false;\n }\n\n if (\n !combineTextItems ||\n !textState.font ||\n !textContentItem.prevTransform\n ) {\n return true;\n }\n\n let lastPosX = textContentItem.prevTransform[4];\n let lastPosY = textContentItem.prevTransform[5];\n\n if (lastPosX === posX && lastPosY === posY) {\n return true;\n }\n\n let rotate = -1;\n // Take into account the rotation is the current transform.\n if (\n currentTransform[0] &&\n currentTransform[1] === 0 &&\n currentTransform[2] === 0\n ) {\n rotate = currentTransform[0] > 0 ? 0 : 180;\n } else if (\n currentTransform[1] &&\n currentTransform[0] === 0 &&\n currentTransform[3] === 0\n ) {\n rotate = currentTransform[1] > 0 ? 90 : 270;\n }\n\n switch (rotate) {\n case 0:\n break;\n case 90:\n [posX, posY] = [posY, posX];\n [lastPosX, lastPosY] = [lastPosY, lastPosX];\n break;\n case 180:\n [posX, posY, lastPosX, lastPosY] = [\n -posX,\n -posY,\n -lastPosX,\n -lastPosY,\n ];\n break;\n case 270:\n [posX, posY] = [-posY, -posX];\n [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n break;\n default:\n // This is not a 0, 90, 180, 270 rotation so:\n // - remove the scale factor from the matrix to get a rotation matrix\n // - apply the inverse (which is the transposed) to the positions\n // and we can then compare positions of the glyphes to detect\n // a whitespace.\n [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n [lastPosX, lastPosY] = applyInverseRotation(\n lastPosX,\n lastPosY,\n textContentItem.prevTransform\n );\n }\n\n if (textState.font.vertical) {\n const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n const advanceX = posX - lastPosX;\n\n // When the total height of the current chunk is negative\n // then we're writing from bottom to top.\n const textOrientation = Math.sign(textContentItem.height);\n if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceX) >\n 0.5 * textContentItem.width /* not the same column */\n ) {\n appendEOL();\n return true;\n }\n\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceX) > textContentItem.width) {\n appendEOL();\n return true;\n }\n\n if (advanceY <= textOrientation * textContentItem.notASpace) {\n // The real spacing between 2 consecutive chars is thin enough to be\n // considered a non-space.\n resetLastChars();\n }\n\n if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.height += advanceY;\n } else if (\n !addFakeSpaces(\n advanceY,\n textContentItem.prevTransform,\n textOrientation\n )\n ) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: 0,\n height: Math.abs(advanceY),\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.height += advanceY;\n }\n }\n\n return true;\n }\n\n const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n const advanceY = posY - lastPosY;\n\n // When the total width of the current chunk is negative\n // then we're writing from right to left.\n const textOrientation = Math.sign(textContentItem.width);\n if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n if (\n Math.abs(advanceY) >\n 0.5 * textContentItem.height /* not the same line */\n ) {\n appendEOL();\n return true;\n }\n\n // We're moving back so in case the last char was a whitespace\n // we cancel it: it doesn't make sense to insert it.\n resetLastChars();\n flushTextContentItem();\n return true;\n }\n\n if (Math.abs(advanceY) > textContentItem.height) {\n appendEOL();\n return true;\n }\n\n if (advanceX <= textOrientation * textContentItem.notASpace) {\n // The real spacing between 2 consecutive chars is thin enough to be\n // considered a non-space.\n resetLastChars();\n }\n\n if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n textContentItem.width += advanceX;\n } else if (\n !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\n ) {\n if (textContentItem.str.length === 0) {\n resetLastChars();\n textContent.items.push({\n str: \" \",\n dir: \"ltr\",\n width: Math.abs(advanceX),\n height: 0,\n transform: textContentItem.prevTransform,\n fontName: textContentItem.fontName,\n hasEOL: false,\n });\n } else {\n textContentItem.width += advanceX;\n }\n }\n\n return true;\n }\n\n function buildTextContentItem({ chars, extraSpacing }) {\n const font = textState.font;\n if (!chars) {\n // Just move according to the space we have.\n const charSpacing = textState.charSpacing + extraSpacing;\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n\n return;\n }\n\n const glyphs = font.charsToGlyphs(chars);\n const scale = textState.fontMatrix[0] * textState.fontSize;\n\n for (let i = 0, ii = glyphs.length; i < ii; i++) {\n const glyph = glyphs[i];\n const { category } = glyph;\n\n if (category.isInvisibleFormatMark) {\n continue;\n }\n let charSpacing =\n textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n\n let glyphWidth = glyph.width;\n if (font.vertical) {\n glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n }\n let scaledDim = glyphWidth * scale;\n\n if (category.isWhitespace) {\n // Don't push a \" \" in the textContentItem\n // (except when it's between two non-spaces chars),\n // it will be done (if required) in next call to\n // compareWithLastPosition.\n // This way we can merge real spaces and spaces due to cursor moves.\n if (!font.vertical) {\n charSpacing += scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n charSpacing += -scaledDim + textState.wordSpacing;\n textState.translateTextMatrix(0, -charSpacing);\n }\n saveLastChar(\" \");\n continue;\n }\n\n if (!compareWithLastPosition()) {\n // The glyph is not in page so just skip it.\n continue;\n }\n\n // Must be called after compareWithLastPosition because\n // the textContentItem could have been flushed.\n const textChunk = ensureTextContentItem();\n if (category.isZeroWidthDiacritic) {\n scaledDim = 0;\n }\n\n if (!font.vertical) {\n scaledDim *= textState.textHScale;\n textState.translateTextMatrix(scaledDim, 0);\n textChunk.width += scaledDim;\n } else {\n textState.translateTextMatrix(0, scaledDim);\n scaledDim = Math.abs(scaledDim);\n textChunk.height += scaledDim;\n }\n\n if (scaledDim) {\n // Save the position of the last visible character.\n textChunk.prevTransform = getCurrentTextTransform();\n }\n\n const glyphUnicode = glyph.normalizedUnicode;\n if (saveLastChar(glyphUnicode)) {\n // The two last chars are a non-whitespace followed by a whitespace\n // and then this non-whitespace, so we insert a whitespace here.\n // Replaces all whitespaces with standard spaces (0x20), to avoid\n // alignment issues between the textLayer and the canvas if the text\n // contains e.g. tabs (fixes issue6612.pdf).\n textChunk.str.push(\" \");\n }\n textChunk.str.push(glyphUnicode);\n\n if (charSpacing) {\n if (!font.vertical) {\n textState.translateTextMatrix(\n charSpacing * textState.textHScale,\n 0\n );\n } else {\n textState.translateTextMatrix(0, -charSpacing);\n }\n }\n }\n }\n\n function appendEOL() {\n resetLastChars();\n if (textContentItem.initialized) {\n textContentItem.hasEOL = true;\n flushTextContentItem();\n } else {\n textContent.items.push({\n str: \"\",\n dir: \"ltr\",\n width: 0,\n height: 0,\n transform: getCurrentTextTransform(),\n fontName: textState.loadedName,\n hasEOL: true,\n });\n }\n }\n\n function addFakeSpaces(width, transf, textOrientation) {\n if (\n textOrientation * textContentItem.spaceInFlowMin <= width &&\n width <= textOrientation * textContentItem.spaceInFlowMax\n ) {\n if (textContentItem.initialized) {\n resetLastChars();\n textContentItem.str.push(\" \");\n }\n return false;\n }\n\n const fontName = textContentItem.fontName;\n\n let height = 0;\n if (textContentItem.vertical) {\n height = width;\n width = 0;\n }\n\n flushTextContentItem();\n resetLastChars();\n textContent.items.push({\n str: \" \",\n // TODO: check if using the orientation from last chunk is\n // better or not.\n dir: \"ltr\",\n width: Math.abs(width),\n height: Math.abs(height),\n transform: transf || getCurrentTextTransform(),\n fontName,\n hasEOL: false,\n });\n\n return true;\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized || !textContentItem.str) {\n return;\n }\n\n // Do final text scaling.\n if (!textContentItem.vertical) {\n textContentItem.totalWidth +=\n textContentItem.width * textContentItem.textAdvanceScale;\n } else {\n textContentItem.totalHeight +=\n textContentItem.height * textContentItem.textAdvanceScale;\n }\n\n textContent.items.push(runBidiTransform(textContentItem));\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk(batch = false) {\n const length = textContent.items.length;\n if (length === 0) {\n return;\n }\n if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n return;\n }\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n\n const timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n const next = function (promise) {\n enqueueChunk(/* batch = */ true);\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n\n const operation = {};\n let stop,\n args = [];\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are not used beyond this loop, so\n // we can reuse the same array on every iteration, thus avoiding\n // unnecessary allocations.\n args.length = 0;\n operation.args = args;\n if (!preprocessor.read(operation)) {\n break;\n }\n textState = stateManager.state;\n const fn = operation.fn;\n args = operation.args;\n\n switch (fn | 0) {\n case OPS.setFont:\n // Optimization to ignore multiple identical Tf commands.\n var fontNameArg = args[0].name,\n fontSizeArg = args[1];\n if (\n textState.font &&\n fontNameArg === textState.fontName &&\n fontSizeArg === textState.fontSize\n ) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n textState.leading = args[0];\n break;\n case OPS.moveText:\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n textState.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n textState.setTextLineMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n updateAdvanceScale();\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n break;\n case OPS.showSpacedText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n\n const spaceFactor =\n ((textState.font.vertical ? 1 : -1) * textState.fontSize) / 1000;\n const elements = args[0];\n for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n const item = elements[i];\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n } else if (typeof item === \"number\" && item !== 0) {\n // PDF Specification 5.3.2 states:\n // The number is expressed in thousandths of a unit of text\n // space.\n // This amount is subtracted from the current horizontal or\n // vertical coordinate, depending on the writing mode.\n // In the default coordinate system, a positive adjustment\n // has the effect of moving the next glyph painted either to\n // the left or down by the given amount.\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: item * spaceFactor,\n });\n }\n }\n\n const item = elements.at(-1);\n if (typeof item === \"string\") {\n showSpacedTextBuffer.push(item);\n }\n\n if (showSpacedTextBuffer.length > 0) {\n const str = showSpacedTextBuffer.join(\"\");\n showSpacedTextBuffer.length = 0;\n buildTextContentItem({\n chars: str,\n extraSpacing: 0,\n });\n }\n break;\n case OPS.showText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[0],\n extraSpacing: 0,\n });\n break;\n case OPS.nextLineSetSpacingShowText:\n if (!stateManager.state.font) {\n self.ensureStateFont(stateManager.state);\n continue;\n }\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem({\n chars: args[2],\n extraSpacing: 0,\n });\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = resources.get(\"XObject\") || Dict.empty;\n }\n\n var isValidName = args[0] instanceof Name;\n var name = args[0].name;\n\n if (isValidName && emptyXObjectCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveXObject, rejectXObject) {\n if (!isValidName) {\n throw new FormatError(\"XObject must be referred to by name.\");\n }\n\n let xobj = xobjs.getRaw(name);\n if (xobj instanceof Ref) {\n if (emptyXObjectCache.getByRef(xobj)) {\n resolveXObject();\n return;\n }\n\n const globalImage = self.globalImageCache.getData(\n xobj,\n self.pageIndex\n );\n if (globalImage) {\n resolveXObject();\n return;\n }\n\n xobj = xref.fetch(xobj);\n }\n\n if (!(xobj instanceof BaseStream)) {\n throw new FormatError(\"XObject should be a stream\");\n }\n\n const type = xobj.dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"XObject should have a Name subtype\");\n }\n\n if (type.name !== \"Form\") {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n\n resolveXObject();\n return;\n }\n\n // Use a new `StateManager` to prevent incorrect positioning\n // of textItems *after* the Form XObject, since errors in the\n // data can otherwise prevent `restore` operators from\n // executing.\n // NOTE: Only an issue when `options.ignoreErrors === true`.\n const currentState = stateManager.state.clone();\n const xObjStateManager = new StateManager(currentState);\n\n const matrix = xobj.dict.getArray(\"Matrix\");\n if (Array.isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n // Enqueue the `textContent` chunk before parsing the /Form\n // XObject.\n enqueueChunk();\n const sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n },\n };\n\n self\n .getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get(\"Resources\") || resources,\n stateManager: xObjStateManager,\n combineTextItems,\n includeMarkedContent,\n sink: sinkWrapper,\n seenStyles,\n viewBox,\n markedContentData,\n })\n .then(function () {\n if (!sinkWrapper.enqueueInvoked) {\n emptyXObjectCache.set(name, xobj.dict.objId, true);\n }\n resolveXObject();\n }, rejectXObject);\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the XObject -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.setGState:\n isValidName = args[0] instanceof Name;\n name = args[0].name;\n\n if (isValidName && emptyGStateCache.getByName(name)) {\n break;\n }\n\n next(\n new Promise(function (resolveGState, rejectGState) {\n if (!isValidName) {\n throw new FormatError(\"GState must be referred to by name.\");\n }\n\n const extGState = resources.get(\"ExtGState\");\n if (!(extGState instanceof Dict)) {\n throw new FormatError(\"ExtGState should be a dictionary.\");\n }\n\n const gState = extGState.get(name);\n // TODO: Attempt to lookup cached GStates by reference as well,\n // if and only if there are PDF documents where doing so\n // would significantly improve performance.\n if (!(gState instanceof Dict)) {\n throw new FormatError(\"GState should be a dictionary.\");\n }\n\n const gStateFont = gState.get(\"Font\");\n if (!gStateFont) {\n emptyGStateCache.set(name, gState.objId, true);\n\n resolveGState();\n return;\n }\n flushTextContentItem();\n\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n handleSetFont(null, gStateFont[0]).then(\n resolveGState,\n rejectGState\n );\n }).catch(function (reason) {\n if (reason instanceof AbortException) {\n return;\n }\n if (self.options.ignoreErrors) {\n // Error(s) in the ExtGState -- allow text-extraction to\n // continue.\n warn(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n return;\n }\n throw reason;\n })\n );\n return;\n case OPS.beginMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n markedContentData.level++;\n\n textContent.items.push({\n type: \"beginMarkedContent\",\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.beginMarkedContentProps:\n flushTextContentItem();\n if (includeMarkedContent) {\n markedContentData.level++;\n\n let mcid = null;\n if (args[1] instanceof Dict) {\n mcid = args[1].get(\"MCID\");\n }\n textContent.items.push({\n type: \"beginMarkedContentProps\",\n id: Number.isInteger(mcid)\n ? `${self.idFactory.getPageObjId()}_mcid${mcid}`\n : null,\n tag: args[0] instanceof Name ? args[0].name : null,\n });\n }\n break;\n case OPS.endMarkedContent:\n flushTextContentItem();\n if (includeMarkedContent) {\n if (markedContentData.level === 0) {\n // Handle unbalanced beginMarkedContent/endMarkedContent\n // operators (fixes issue15629.pdf).\n break;\n }\n markedContentData.level--;\n\n textContent.items.push({\n type: \"endMarkedContent\",\n });\n }\n break;\n } // switch\n if (textContent.items.length >= sink.desiredSize) {\n // Wait for ready, if we reach highWaterMark.\n stop = true;\n break;\n }\n } // while\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch(reason => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TextContent -- allow text-extraction to continue.\n warn(\n `getTextContent - ignoring errors during \"${task.name}\" ` +\n `task: \"${reason}\".`\n );\n\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n }\n\n extractDataStructures(dict, baseDict, properties) {\n const xref = this.xref;\n let cidToGidBytes;\n // 9.10.2\n const toUnicodePromise = this.readToUnicode(\n properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\")\n );\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n if (cidSystemInfo instanceof Dict) {\n properties.cidSystemInfo = {\n registry: stringToPDFString(cidSystemInfo.get(\"Registry\")),\n ordering: stringToPDFString(cidSystemInfo.get(\"Ordering\")),\n supplement: cidSystemInfo.get(\"Supplement\"),\n };\n }\n\n try {\n const cidToGidMap = dict.get(\"CIDToGIDMap\");\n if (cidToGidMap instanceof BaseStream) {\n cidToGidBytes = cidToGidMap.getBytes();\n }\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`extractDataStructures - ignoring CIDToGIDMap data: \"${ex}\".`);\n }\n }\n\n // Based on 9.6.6 of the spec the encoding can come from multiple places\n // and depends on the font type. The base encoding and differences are\n // read here, but the encoding that is actually used is chosen during\n // glyph mapping in the font.\n // TODO: Loading the built in encoding in the font would allow the\n // differences to be merged in here not require us to hold on to it.\n const differences = [];\n let baseEncodingName = null;\n let encoding;\n if (dict.has(\"Encoding\")) {\n encoding = dict.get(\"Encoding\");\n if (encoding instanceof Dict) {\n baseEncodingName = encoding.get(\"BaseEncoding\");\n baseEncodingName =\n baseEncodingName instanceof Name ? baseEncodingName.name : null;\n // Load the differences between the base and original\n if (encoding.has(\"Differences\")) {\n const diffEncoding = encoding.get(\"Differences\");\n let index = 0;\n for (const entry of diffEncoding) {\n const data = xref.fetchIfRef(entry);\n if (typeof data === \"number\") {\n index = data;\n } else if (data instanceof Name) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(\n `Invalid entry in 'Differences' array: ${data}`\n );\n }\n }\n }\n } else if (encoding instanceof Name) {\n baseEncodingName = encoding.name;\n } else {\n const msg = \"Encoding is not a Name nor a Dict\";\n\n if (!this.options.ignoreErrors) {\n throw new FormatError(msg);\n }\n warn(msg);\n }\n // According to table 114 if the encoding is a named encoding it must be\n // one of these predefined encodings.\n if (\n baseEncodingName !== \"MacRomanEncoding\" &&\n baseEncodingName !== \"MacExpertEncoding\" &&\n baseEncodingName !== \"WinAnsiEncoding\"\n ) {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName);\n } else {\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n // font should use the `StandardEncoding` if no encoding is specified.\n encoding = StandardEncoding;\n if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n // The Symbolic attribute can be misused for regular fonts\n // Heuristic: we have to check if the font is a standard one also\n if (isSymbolicFont) {\n encoding = MacRomanEncoding;\n if (!properties.file || properties.isInternalFont) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise\n .then(readToUnicode => {\n properties.toUnicode = readToUnicode;\n return this.buildToUnicode(properties);\n })\n .then(builtToUnicode => {\n properties.toUnicode = builtToUnicode;\n if (cidToGidBytes) {\n properties.cidToGidMap = this.readCidToGidMap(\n cidToGidBytes,\n builtToUnicode\n );\n }\n return properties;\n });\n }\n\n /**\n * @returns {Array}\n * @private\n */\n _simpleFontToUnicode(properties, forceGlyphs = false) {\n assert(!properties.composite, \"Must be a simple font.\");\n\n const toUnicode = [];\n const encoding = properties.defaultEncoding.slice();\n const baseEncodingName = properties.baseEncodingName;\n // Merge in the differences array.\n const differences = properties.differences;\n for (const charcode in differences) {\n const glyphName = differences[charcode];\n if (glyphName === \".notdef\") {\n // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n // where there should be spaces (fixes issue5256.pdf).\n continue;\n }\n encoding[charcode] = glyphName;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (const charcode in encoding) {\n // a) Map the character code to a character name.\n let glyphName = encoding[charcode];\n if (glyphName === \"\") {\n continue;\n }\n // b) Look up the character name in the Adobe Glyph List (see the\n // Bibliography) to obtain the corresponding Unicode value.\n let unicode = glyphsUnicodeMap[glyphName];\n if (unicode !== undefined) {\n toUnicode[charcode] = String.fromCharCode(unicode);\n continue;\n }\n // (undocumented) c) Few heuristics to recognize unknown glyphs\n // NOTE: Adobe Reader does not do this step, but OSX Preview does\n let code = 0;\n switch (glyphName[0]) {\n case \"G\": // Gxx glyph\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"g\": // g00xx glyph\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substring(1), 16);\n }\n break;\n case \"C\": // Cdd{d} glyph\n case \"c\": // cdd{d} glyph\n if (glyphName.length >= 3 && glyphName.length <= 4) {\n const codeStr = glyphName.substring(1);\n\n if (forceGlyphs) {\n code = parseInt(codeStr, 16);\n break;\n }\n // Normally the Cdd{d}/cdd{d} glyphName format will contain\n // regular, i.e. base 10, charCodes (see issue4550.pdf)...\n code = +codeStr;\n\n // ... however some PDF generators violate that assumption by\n // containing glyph, i.e. base 16, codes instead.\n // In that case we need to re-parse the *entire* encoding to\n // prevent broken text-selection (fixes issue9655_reduced.pdf).\n if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n return this._simpleFontToUnicode(\n properties,\n /* forceGlyphs */ true\n );\n }\n }\n break;\n case \"u\": // 'uniXXXX'/'uXXXX{XX}' glyphs\n unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n break;\n }\n if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n // If `baseEncodingName` is one the predefined encodings, and `code`\n // equals `charcode`, using the glyph defined in the baseEncoding\n // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n if (baseEncodingName && code === +charcode) {\n const baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] = String.fromCharCode(\n glyphsUnicodeMap[glyphName]\n );\n continue;\n }\n }\n toUnicode[charcode] = String.fromCodePoint(code);\n }\n }\n return toUnicode;\n }\n\n /**\n * Builds a char code to unicode map based on section 9.10 of the spec.\n * @param {Object} properties Font properties object.\n * @returns {Promise} A Promise that is resolved with a\n * {ToUnicodeMap|IdentityToUnicodeMap} object.\n */\n async buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap =\n !!properties.toUnicode && properties.toUnicode.length > 0;\n\n // Section 9.10.2 Mapping Character Codes to Unicode Values\n if (properties.hasIncludedToUnicodeMap) {\n // Some fonts contain incomplete ToUnicode data, causing issues with\n // text-extraction. For simple fonts, containing encoding information,\n // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n if (!properties.composite && properties.hasEncoding) {\n properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n }\n return properties.toUnicode;\n }\n\n // According to the spec if the font is a simple font we should only map\n // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n // the differences array only contains adobe standard or symbol set names,\n // in pratice it seems better to always try to create a toUnicode map\n // based of the default encoding.\n if (!properties.composite /* is simple font */) {\n return new ToUnicodeMap(this._simpleFontToUnicode(properties));\n }\n\n // If the font is a composite font that uses one of the predefined CMaps\n // listed in Table 118 (except Identity–H and Identity–V) or whose\n // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n // Adobe-Korea1 character collection:\n if (\n properties.composite &&\n ((properties.cMap.builtInCMap &&\n !(properties.cMap instanceof IdentityCMap)) ||\n (properties.cidSystemInfo.registry === \"Adobe\" &&\n (properties.cidSystemInfo.ordering === \"GB1\" ||\n properties.cidSystemInfo.ordering === \"CNS1\" ||\n properties.cidSystemInfo.ordering === \"Japan1\" ||\n properties.cidSystemInfo.ordering === \"Korea1\")))\n ) {\n // Then:\n // a) Map the character code to a character identifier (CID) according\n // to the font’s CMap.\n // b) Obtain the registry and ordering of the character collection used\n // by the font’s CMap (for example, Adobe and Japan1) from its\n // CIDSystemInfo dictionary.\n const { registry, ordering } = properties.cidSystemInfo;\n // c) Construct a second CMap name by concatenating the registry and\n // ordering obtained in step (b) in the format registry–ordering–UCS2\n // (for example, Adobe–Japan1–UCS2).\n const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\n // d) Obtain the CMap with the name constructed in step (c) (available\n // from the ASN Web site; see the Bibliography).\n const ucs2CMap = await CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n const toUnicode = [];\n properties.cMap.forEach(function (charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n // e) Map the CID obtained in step (a) according to the CMap\n // obtained in step (d), producing a Unicode value.\n const ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n toUnicode[charcode] = String.fromCharCode(\n (ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)\n );\n }\n });\n return new ToUnicodeMap(toUnicode);\n }\n\n // The viewer's choice, just use an identity map.\n return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n }\n\n readToUnicode(cmapObj) {\n if (!cmapObj) {\n return Promise.resolve(null);\n }\n if (cmapObj instanceof Name) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n return new ToUnicodeMap(cmap.getMap());\n });\n } else if (cmapObj instanceof BaseStream) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n }).then(\n function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xffff);\n }\n const map = new Array(cmap.length);\n // Convert UTF-16BE\n // NOTE: cmap can be a sparse array, so use forEach instead of\n // `for(;;)` to iterate over all keys.\n cmap.forEach(function (charCode, token) {\n // Some cmaps contain *only* CID characters (fixes issue9367.pdf).\n if (typeof token === \"number\") {\n map[charCode] = String.fromCodePoint(token);\n return;\n }\n const str = [];\n for (let k = 0; k < token.length; k += 2) {\n const w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n if ((w1 & 0xf800) !== 0xd800) {\n // w1 < 0xD800 || w1 > 0xDFFF\n str.push(w1);\n continue;\n }\n k += 2;\n const w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCodePoint(...str);\n });\n return new ToUnicodeMap(map);\n },\n reason => {\n if (reason instanceof AbortException) {\n return null;\n }\n if (this.options.ignoreErrors) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error in the ToUnicode data -- sending unsupported feature\n // notification and allow font parsing to continue.\n this.handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontToUnicode,\n });\n }\n warn(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n return null;\n }\n throw reason;\n }\n );\n }\n return Promise.resolve(null);\n }\n\n readCidToGidMap(glyphsData, toUnicode) {\n // Extract the encoding from the CIDToGIDMap\n\n // Set encoding 0 to later verify the font has an encoding\n const result = [];\n for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n const glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n const code = j >> 1;\n if (glyphID === 0 && !toUnicode.has(code)) {\n continue;\n }\n result[code] = glyphID;\n }\n return result;\n }\n\n extractWidths(dict, descriptor, properties) {\n const xref = this.xref;\n let glyphsWidths = [];\n let defaultWidth = 0;\n const glyphsVMetrics = [];\n let defaultVMetrics;\n let i, ii, j, jj, start, code, widths;\n if (properties.composite) {\n defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n\n widths = dict.get(\"W\");\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n const width = xref.fetchIfRef(widths[++i]);\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get(\"W2\");\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n if (Array.isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j]),\n ];\n }\n } else {\n const vmetric = [\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n ];\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n const firstChar = properties.firstChar;\n widths = dict.get(\"Widths\");\n if (widths) {\n j = firstChar;\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n } else {\n // Trying get the BaseFont metrics (see comment above).\n const baseFontName = dict.get(\"BaseFont\");\n if (baseFontName instanceof Name) {\n const metrics = this.getBaseFontMetrics(baseFontName.name);\n\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n // Heuristic: detection of monospace font by checking all non-zero widths\n let isMonospace = true;\n let firstWidth = defaultWidth;\n for (const glyph in glyphsWidths) {\n const glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n }\n\n isSerifFont(baseFontName) {\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n return (\n fontNameWoStyle in getSerifFonts() || /serif/gi.test(fontNameWoStyle)\n );\n }\n\n getBaseFontMetrics(name) {\n let defaultWidth = 0;\n let widths = Object.create(null);\n let monospace = false;\n const stdFontMap = getStdFontMap();\n let lookupName = stdFontMap[name] || name;\n const Metrics = getMetrics();\n\n if (!(lookupName in Metrics)) {\n // Use default fonts for looking up font metrics if the passed\n // font is not a base font\n if (this.isSerifFont(name)) {\n lookupName = \"Times-Roman\";\n } else {\n lookupName = \"Helvetica\";\n }\n }\n const glyphWidths = Metrics[lookupName];\n\n if (typeof glyphWidths === \"number\") {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths(); // expand lazy widths array\n }\n\n return {\n defaultWidth,\n monospace,\n widths,\n };\n }\n\n buildCharCodeToWidth(widthsByGlyphName, properties) {\n const widths = Object.create(null);\n const differences = properties.differences;\n const encoding = properties.defaultEncoding;\n for (let charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n }\n\n preEvaluateFont(dict) {\n const baseDict = dict;\n let type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n\n let composite = false;\n let hash, toUnicode;\n if (type.name === \"Type0\") {\n // If font is a composite\n // - get the descendant font\n // - set the type according to the descendant font\n // - get the FontDescriptor from the descendant font\n const df = dict.get(\"DescendantFonts\");\n if (!df) {\n throw new FormatError(\"Descendant fonts are not specified\");\n }\n dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n if (!(dict instanceof Dict)) {\n throw new FormatError(\"Descendant font is not a dictionary.\");\n }\n type = dict.get(\"Subtype\");\n if (!(type instanceof Name)) {\n throw new FormatError(\"invalid font Subtype\");\n }\n composite = true;\n }\n\n const firstChar = dict.get(\"FirstChar\") || 0,\n lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n const descriptor = dict.get(\"FontDescriptor\");\n if (descriptor) {\n hash = new MurmurHash3_64();\n\n const encoding = baseDict.getRaw(\"Encoding\");\n if (encoding instanceof Name) {\n hash.update(encoding.name);\n } else if (encoding instanceof Ref) {\n hash.update(encoding.toString());\n } else if (encoding instanceof Dict) {\n for (const entry of encoding.getRawValues()) {\n if (entry instanceof Name) {\n hash.update(entry.name);\n } else if (entry instanceof Ref) {\n hash.update(entry.toString());\n } else if (Array.isArray(entry)) {\n // 'Differences' array (fixes bug1157493.pdf).\n const diffLength = entry.length,\n diffBuf = new Array(diffLength);\n\n for (let j = 0; j < diffLength; j++) {\n const diffEntry = entry[j];\n if (diffEntry instanceof Name) {\n diffBuf[j] = diffEntry.name;\n } else if (\n typeof diffEntry === \"number\" ||\n diffEntry instanceof Ref\n ) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n\n hash.update(`${firstChar}-${lastChar}`); // Fixes issue10665_reduced.pdf\n\n toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n if (toUnicode instanceof BaseStream) {\n const stream = toUnicode.str || toUnicode;\n const uint8array = stream.buffer\n ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\n : new Uint8Array(\n stream.bytes.buffer,\n stream.start,\n stream.end - stream.start\n );\n hash.update(uint8array);\n } else if (toUnicode instanceof Name) {\n hash.update(toUnicode.name);\n }\n\n const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n if (Array.isArray(widths)) {\n const widthsBuf = [];\n for (const entry of widths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n }\n }\n hash.update(widthsBuf.join());\n }\n\n if (composite) {\n hash.update(\"compositeFont\");\n\n const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n if (Array.isArray(compositeWidths)) {\n const widthsBuf = [];\n for (const entry of compositeWidths) {\n if (typeof entry === \"number\" || entry instanceof Ref) {\n widthsBuf.push(entry.toString());\n } else if (Array.isArray(entry)) {\n const subWidthsBuf = [];\n for (const element of entry) {\n if (typeof element === \"number\" || element instanceof Ref) {\n subWidthsBuf.push(element.toString());\n }\n }\n widthsBuf.push(`[${subWidthsBuf.join()}]`);\n }\n }\n hash.update(widthsBuf.join());\n }\n\n const cidToGidMap =\n dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n if (cidToGidMap instanceof Name) {\n hash.update(cidToGidMap.name);\n } else if (cidToGidMap instanceof Ref) {\n hash.update(cidToGidMap.toString());\n } else if (cidToGidMap instanceof BaseStream) {\n hash.update(cidToGidMap.peekBytes());\n }\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n firstChar,\n lastChar,\n toUnicode,\n hash: hash ? hash.hexdigest() : \"\",\n };\n }\n\n async translateFont({\n descriptor,\n dict,\n baseDict,\n composite,\n type,\n firstChar,\n lastChar,\n toUnicode,\n cssFontInfo,\n }) {\n const isType3Font = type === \"Type3\";\n let properties;\n\n if (!descriptor) {\n if (isType3Font) {\n // FontDescriptor is only required for Type3 fonts when the document\n // is a tagged pdf. Create a barbebones one to get by.\n descriptor = new Dict(null);\n descriptor.set(\"FontName\", Name.get(type));\n descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n } else {\n // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n // FontDescriptor was not required.\n // This case is here for compatibility.\n let baseFontName = dict.get(\"BaseFont\");\n if (!(baseFontName instanceof Name)) {\n throw new FormatError(\"Base font is not specified\");\n }\n\n // Using base font name as a font name.\n baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n const metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n const fontNameWoStyle = baseFontName.split(\"-\")[0];\n const flags =\n (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n (metrics.monospace ? FontFlags.FixedPitch : 0) |\n (getSymbolsFonts()[fontNameWoStyle]\n ? FontFlags.Symbolic\n : FontFlags.Nonsymbolic);\n\n properties = {\n type,\n name: baseFontName,\n loadedName: baseDict.loadedName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n isSimulatedFlags: true,\n flags,\n firstChar,\n lastChar,\n toUnicode,\n xHeight: 0,\n capHeight: 0,\n italicAngle: 0,\n isType3Font,\n };\n const widths = dict.get(\"Widths\");\n\n const standardFontName = getStandardFontName(baseFontName);\n let file = null;\n if (standardFontName) {\n properties.isStandardFont = true;\n file = await this.fetchStandardFontData(standardFontName);\n properties.isInternalFont = !!file;\n }\n return this.extractDataStructures(dict, dict, properties).then(\n newProperties => {\n if (widths) {\n const glyphWidths = [];\n let j = firstChar;\n for (const width of widths) {\n glyphWidths[j++] = this.xref.fetchIfRef(width);\n }\n newProperties.widths = glyphWidths;\n } else {\n newProperties.widths = this.buildCharCodeToWidth(\n metrics.widths,\n newProperties\n );\n }\n return new Font(baseFontName, file, newProperties);\n }\n );\n }\n }\n\n // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n // to ignore this rule when a variant of a standard font is used.\n // TODO Fill the width array depending on which of the base font this is\n // a variant.\n\n let fontName = descriptor.get(\"FontName\");\n let baseFont = dict.get(\"BaseFont\");\n // Some bad PDFs have a string as the font name.\n if (typeof fontName === \"string\") {\n fontName = Name.get(fontName);\n }\n if (typeof baseFont === \"string\") {\n baseFont = Name.get(baseFont);\n }\n\n if (!isType3Font) {\n const fontNameStr = fontName && fontName.name;\n const baseFontStr = baseFont && baseFont.name;\n if (fontNameStr !== baseFontStr) {\n info(\n `The FontDescriptor's FontName is \"${fontNameStr}\" but ` +\n `should be the same as the Font's BaseFont \"${baseFontStr}\".`\n );\n // Workaround for cases where e.g. fontNameStr = 'Arial' and\n // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n fontName = baseFont;\n }\n }\n }\n fontName = fontName || baseFont;\n\n if (!(fontName instanceof Name)) {\n throw new FormatError(\"invalid font name\");\n }\n\n let fontFile, subtype, length1, length2, length3;\n try {\n fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n } catch (ex) {\n if (!this.options.ignoreErrors) {\n throw ex;\n }\n warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n fontFile = new NullStream();\n }\n let isStandardFont = false;\n let isInternalFont = false;\n let glyphScaleFactors = null;\n if (fontFile) {\n if (fontFile.dict) {\n const subtypeEntry = fontFile.dict.get(\"Subtype\");\n if (subtypeEntry instanceof Name) {\n subtype = subtypeEntry.name;\n }\n length1 = fontFile.dict.get(\"Length1\");\n length2 = fontFile.dict.get(\"Length2\");\n length3 = fontFile.dict.get(\"Length3\");\n }\n } else if (cssFontInfo) {\n // We've a missing XFA font.\n const standardFontName = getXfaFontName(fontName.name);\n if (standardFontName) {\n cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n cssFontInfo.metrics = standardFontName.metrics || null;\n glyphScaleFactors = standardFontName.factors || null;\n fontFile = await this.fetchStandardFontData(standardFontName.name);\n isInternalFont = !!fontFile;\n\n // We're using a substitution font but for example widths (if any)\n // are related to the glyph positions in the font.\n // So we overwrite everything here to be sure that widths are\n // correct.\n baseDict = dict = getXfaFontDict(fontName.name);\n composite = true;\n }\n } else if (!isType3Font) {\n const standardFontName = getStandardFontName(fontName.name);\n if (standardFontName) {\n isStandardFont = true;\n fontFile = await this.fetchStandardFontData(standardFontName);\n isInternalFont = !!fontFile;\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n isStandardFont,\n isInternalFont,\n loadedName: baseDict.loadedName,\n composite,\n fixedPitch: false,\n fontMatrix: dict.getArray(\"FontMatrix\") || FONT_IDENTITY_MATRIX,\n firstChar,\n lastChar,\n toUnicode,\n bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n ascent: descriptor.get(\"Ascent\"),\n descent: descriptor.get(\"Descent\"),\n xHeight: descriptor.get(\"XHeight\") || 0,\n capHeight: descriptor.get(\"CapHeight\") || 0,\n flags: descriptor.get(\"Flags\"),\n italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n isType3Font,\n cssFontInfo,\n scaleFactors: glyphScaleFactors,\n };\n\n if (composite) {\n const cidEncoding = baseDict.get(\"Encoding\");\n if (cidEncoding instanceof Name) {\n properties.cidEncoding = cidEncoding.name;\n }\n const cMap = await CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n useCMap: null,\n });\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n }\n\n return this.extractDataStructures(dict, baseDict, properties).then(\n newProperties => {\n this.extractWidths(dict, descriptor, newProperties);\n\n return new Font(fontName.name, fontFile, newProperties);\n }\n );\n }\n\n static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n function buildPath(fontChar) {\n const glyphName = `${font.loadedName}_path_${fontChar}`;\n try {\n if (font.renderer.hasBuiltPath(fontChar)) {\n return;\n }\n handler.send(\"commonobj\", [\n glyphName,\n \"FontPath\",\n font.renderer.getPathJs(fontChar),\n ]);\n } catch (reason) {\n if (evaluatorOptions.ignoreErrors) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // Error in the font data -- sending unsupported feature\n // notification and allow glyph path building to continue.\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.errorFontBuildPath,\n });\n }\n warn(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n return;\n }\n throw reason;\n }\n }\n\n for (const glyph of glyphs) {\n buildPath(glyph.fontChar);\n\n // If the glyph has an accent we need to build a path for its\n // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n const accent = glyph.accent;\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n static get fallbackFontDict() {\n const dict = new Dict();\n dict.set(\"BaseFont\", Name.get(\"PDFJS-FallbackFont\"));\n dict.set(\"Type\", Name.get(\"FallbackType\"));\n dict.set(\"Subtype\", Name.get(\"FallbackType\"));\n dict.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n\n return shadow(this, \"fallbackFontDict\", dict);\n }\n}\n\nclass TranslatedFont {\n constructor({ loadedName, font, dict, evaluatorOptions }) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n this.type3Loaded = null;\n this.type3Dependencies = font.isType3Font ? new Set() : null;\n this.sent = false;\n }\n\n send(handler) {\n if (this.sent) {\n return;\n }\n this.sent = true;\n\n handler.send(\"commonobj\", [\n this.loadedName,\n \"Font\",\n this.font.exportData(this._evaluatorOptions.fontExtraProperties),\n ]);\n }\n\n fallback(handler) {\n if (!this.font.data) {\n return;\n }\n // When font loading failed, fall back to the built-in font renderer.\n this.font.disableFontFace = true;\n // An arbitrary number of text rendering operators could have been\n // encountered between the point in time when the 'Font' message was sent\n // to the main-thread, and the point in time when the 'FontFallback'\n // message was received on the worker-thread.\n // To ensure that all 'FontPath's are available on the main-thread, when\n // font loading failed, attempt to resend *all* previously parsed glyphs.\n PartialEvaluator.buildFontPaths(\n this.font,\n /* glyphs = */ this.font.glyphCacheValues,\n handler,\n this._evaluatorOptions\n );\n }\n\n loadType3Data(evaluator, resources, task) {\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n if (!this.font.isType3Font) {\n throw new Error(\"Must be a Type3 font.\");\n }\n // When parsing Type3 glyphs, always ignore them if there are errors.\n // Compared to the parsing of e.g. an entire page, it doesn't really\n // make sense to only be able to render a Type3 glyph partially.\n const type3Evaluator = evaluator.clone({ ignoreErrors: false });\n type3Evaluator.parsingType3Font = true;\n // Prevent circular references in Type3 fonts.\n const type3FontRefs = new RefSet(evaluator.type3FontRefs);\n if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n type3FontRefs.put(this.dict.objId);\n }\n type3Evaluator.type3FontRefs = type3FontRefs;\n\n const translatedFont = this.font,\n type3Dependencies = this.type3Dependencies;\n let loadCharProcsPromise = Promise.resolve();\n const charProcs = this.dict.get(\"CharProcs\");\n const fontResources = this.dict.get(\"Resources\") || resources;\n const charProcOperatorList = Object.create(null);\n\n const fontBBox = Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]),\n width = fontBBox[2] - fontBBox[0],\n height = fontBBox[3] - fontBBox[1];\n const fontBBoxSize = Math.hypot(width, height);\n\n for (const key of charProcs.getKeys()) {\n loadCharProcsPromise = loadCharProcsPromise.then(() => {\n const glyphStream = charProcs.get(key);\n const operatorList = new OperatorList();\n return type3Evaluator\n .getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n })\n .then(() => {\n // According to the PDF specification, section \"9.6.5 Type 3 Fonts\"\n // and \"Table 113\":\n // \"A glyph description that begins with the d1 operator should\n // not execute any operators that set the colour (or other\n // colour-related parameters) in the graphics state;\n // any use of such operators shall be ignored.\"\n if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n this._removeType3ColorOperators(operatorList, fontBBoxSize);\n }\n charProcOperatorList[key] = operatorList.getIR();\n\n for (const dependency of operatorList.dependencies) {\n type3Dependencies.add(dependency);\n }\n })\n .catch(function (reason) {\n warn(`Type3 font resource \"${key}\" is not available.`);\n const dummyOperatorList = new OperatorList();\n charProcOperatorList[key] = dummyOperatorList.getIR();\n });\n });\n }\n this.type3Loaded = loadCharProcsPromise.then(() => {\n translatedFont.charProcOperatorList = charProcOperatorList;\n if (this._bbox) {\n translatedFont.isCharBBox = true;\n translatedFont.bbox = this._bbox;\n }\n });\n return this.type3Loaded;\n }\n\n /**\n * @private\n */\n _removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\n \"Type3 glyph shall start with the d1 operator.\"\n );\n }\n const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\n width = charBBox[2] - charBBox[0],\n height = charBBox[3] - charBBox[1];\n const charBBoxSize = Math.hypot(width, height);\n\n if (width === 0 || height === 0) {\n // Skip the d1 operator when its bounds are bogus (fixes issue14953.pdf).\n operatorList.fnArray.splice(0, 1);\n operatorList.argsArray.splice(0, 1);\n } else if (\n fontBBoxSize === 0 ||\n Math.round(charBBoxSize / fontBBoxSize) >= 10\n ) {\n // Override the fontBBox when it's undefined/empty, or when it's at least\n // (approximately) one order of magnitude smaller than the charBBox\n // (fixes issue14999_reduced.pdf).\n if (!this._bbox) {\n this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n }\n this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n }\n\n let i = 0,\n ii = operatorList.length;\n while (i < ii) {\n switch (operatorList.fnArray[i]) {\n case OPS.setCharWidthAndBounds:\n break; // Handled above.\n case OPS.setStrokeColorSpace:\n case OPS.setFillColorSpace:\n case OPS.setStrokeColor:\n case OPS.setStrokeColorN:\n case OPS.setFillColor:\n case OPS.setFillColorN:\n case OPS.setStrokeGray:\n case OPS.setFillGray:\n case OPS.setStrokeRGBColor:\n case OPS.setFillRGBColor:\n case OPS.setStrokeCMYKColor:\n case OPS.setFillCMYKColor:\n case OPS.shadingFill:\n case OPS.setRenderingIntent:\n operatorList.fnArray.splice(i, 1);\n operatorList.argsArray.splice(i, 1);\n ii--;\n continue;\n\n case OPS.setGState:\n const [gStateObj] = operatorList.argsArray[i];\n let j = 0,\n jj = gStateObj.length;\n while (j < jj) {\n const [gStateKey] = gStateObj[j];\n switch (gStateKey) {\n case \"TR\":\n case \"TR2\":\n case \"HT\":\n case \"BG\":\n case \"BG2\":\n case \"UCR\":\n case \"UCR2\":\n gStateObj.splice(j, 1);\n jj--;\n continue;\n }\n j++;\n }\n break;\n }\n i++;\n }\n }\n}\n\nclass StateManager {\n constructor(initialState = new EvalState()) {\n this.state = initialState;\n this.stateStack = [];\n }\n\n save() {\n const old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n }\n\n restore() {\n const prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n }\n\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n }\n}\n\nclass TextState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.loadedName = null;\n this.font = null;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.textMatrix = IDENTITY_MATRIX.slice();\n this.textLineMatrix = IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const m = this.textMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n setTextLineMatrix(a, b, c, d, e, f) {\n const m = this.textLineMatrix;\n m[0] = a;\n m[1] = b;\n m[2] = c;\n m[3] = d;\n m[4] = e;\n m[5] = f;\n }\n\n translateTextMatrix(x, y) {\n const m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n translateTextLineMatrix(x, y) {\n const m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n }\n\n carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n }\n\n clone() {\n const clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n }\n}\n\nclass EvalState {\n constructor() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.fillColorSpace = ColorSpace.singletons.gray;\n this.strokeColorSpace = ColorSpace.singletons.gray;\n }\n\n clone() {\n return Object.create(this);\n }\n}\n\nclass EvaluatorPreprocessor {\n static get opMap() {\n // Specifies properties for each command\n //\n // If variableArgs === true: [0, `numArgs`] expected\n // If variableArgs === false: exactly `numArgs` expected\n const getOPMap = getLookupTableFactory(function (t) {\n // Graphic state\n t.w = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false };\n t.J = { id: OPS.setLineCap, numArgs: 1, variableArgs: false };\n t.j = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false };\n t.M = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false };\n t.d = { id: OPS.setDash, numArgs: 2, variableArgs: false };\n t.ri = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false };\n t.i = { id: OPS.setFlatness, numArgs: 1, variableArgs: false };\n t.gs = { id: OPS.setGState, numArgs: 1, variableArgs: false };\n t.q = { id: OPS.save, numArgs: 0, variableArgs: false };\n t.Q = { id: OPS.restore, numArgs: 0, variableArgs: false };\n t.cm = { id: OPS.transform, numArgs: 6, variableArgs: false };\n\n // Path\n t.m = { id: OPS.moveTo, numArgs: 2, variableArgs: false };\n t.l = { id: OPS.lineTo, numArgs: 2, variableArgs: false };\n t.c = { id: OPS.curveTo, numArgs: 6, variableArgs: false };\n t.v = { id: OPS.curveTo2, numArgs: 4, variableArgs: false };\n t.y = { id: OPS.curveTo3, numArgs: 4, variableArgs: false };\n t.h = { id: OPS.closePath, numArgs: 0, variableArgs: false };\n t.re = { id: OPS.rectangle, numArgs: 4, variableArgs: false };\n t.S = { id: OPS.stroke, numArgs: 0, variableArgs: false };\n t.s = { id: OPS.closeStroke, numArgs: 0, variableArgs: false };\n t.f = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t.F = { id: OPS.fill, numArgs: 0, variableArgs: false };\n t[\"f*\"] = { id: OPS.eoFill, numArgs: 0, variableArgs: false };\n t.B = { id: OPS.fillStroke, numArgs: 0, variableArgs: false };\n t[\"B*\"] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false };\n t.b = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false };\n t[\"b*\"] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false };\n t.n = { id: OPS.endPath, numArgs: 0, variableArgs: false };\n\n // Clipping\n t.W = { id: OPS.clip, numArgs: 0, variableArgs: false };\n t[\"W*\"] = { id: OPS.eoClip, numArgs: 0, variableArgs: false };\n\n // Text\n t.BT = { id: OPS.beginText, numArgs: 0, variableArgs: false };\n t.ET = { id: OPS.endText, numArgs: 0, variableArgs: false };\n t.Tc = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false };\n t.Tw = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false };\n t.Tz = { id: OPS.setHScale, numArgs: 1, variableArgs: false };\n t.TL = { id: OPS.setLeading, numArgs: 1, variableArgs: false };\n t.Tf = { id: OPS.setFont, numArgs: 2, variableArgs: false };\n t.Tr = { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false };\n t.Ts = { id: OPS.setTextRise, numArgs: 1, variableArgs: false };\n t.Td = { id: OPS.moveText, numArgs: 2, variableArgs: false };\n t.TD = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false };\n t.Tm = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false };\n t[\"T*\"] = { id: OPS.nextLine, numArgs: 0, variableArgs: false };\n t.Tj = { id: OPS.showText, numArgs: 1, variableArgs: false };\n t.TJ = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false };\n t[\"'\"] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false };\n t['\"'] = {\n id: OPS.nextLineSetSpacingShowText,\n numArgs: 3,\n variableArgs: false,\n };\n\n // Type3 fonts\n t.d0 = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false };\n t.d1 = {\n id: OPS.setCharWidthAndBounds,\n numArgs: 6,\n variableArgs: false,\n };\n\n // Color\n t.CS = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false };\n t.cs = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false };\n t.SC = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true };\n t.SCN = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true };\n t.sc = { id: OPS.setFillColor, numArgs: 4, variableArgs: true };\n t.scn = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true };\n t.G = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false };\n t.g = { id: OPS.setFillGray, numArgs: 1, variableArgs: false };\n t.RG = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false };\n t.rg = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false };\n t.K = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false };\n t.k = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false };\n\n // Shading\n t.sh = { id: OPS.shadingFill, numArgs: 1, variableArgs: false };\n\n // Images\n t.BI = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false };\n t.ID = { id: OPS.beginImageData, numArgs: 0, variableArgs: false };\n t.EI = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false };\n\n // XObjects\n t.Do = { id: OPS.paintXObject, numArgs: 1, variableArgs: false };\n t.MP = { id: OPS.markPoint, numArgs: 1, variableArgs: false };\n t.DP = { id: OPS.markPointProps, numArgs: 2, variableArgs: false };\n t.BMC = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false };\n t.BDC = {\n id: OPS.beginMarkedContentProps,\n numArgs: 2,\n variableArgs: false,\n };\n t.EMC = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false };\n\n // Compatibility\n t.BX = { id: OPS.beginCompat, numArgs: 0, variableArgs: false };\n t.EX = { id: OPS.endCompat, numArgs: 0, variableArgs: false };\n\n // (reserved partial commands for the lexer)\n t.BM = null;\n t.BD = null;\n t.true = null;\n t.fa = null;\n t.fal = null;\n t.fals = null;\n t.false = null;\n t.nu = null;\n t.nul = null;\n t.null = null;\n });\n\n return shadow(this, \"opMap\", getOPMap());\n }\n\n static get MAX_INVALID_PATH_OPS() {\n return shadow(this, \"MAX_INVALID_PATH_OPS\", 10);\n }\n\n constructor(stream, xref, stateManager = new StateManager()) {\n // TODO(mduan): pass array of knownCommands rather than this.opMap\n // dictionary\n this.parser = new Parser({\n lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\n xref,\n });\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n this._isPathOp = false;\n this._numInvalidPathOPS = 0;\n }\n\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n }\n\n // |operation| is an object with two fields:\n //\n // - |fn| is an out param.\n //\n // - |args| is an inout param. On entry, it should have one of two values.\n //\n // - An empty array. This indicates that the caller is providing the\n // array in which the args will be stored in. The caller should use\n // this value if it can reuse a single array for each call to read().\n //\n // - |null|. This indicates that the caller needs this function to create\n // the array in which any args are stored in. If there are zero args,\n // this function will leave |operation.args| as |null| (thus avoiding\n // allocations that would occur if we used an empty array to represent\n // zero arguments). Otherwise, it will replace |null| with a new array\n // containing the arguments. The caller should use this value if it\n // cannot reuse an array for each call to read().\n //\n // These two modes are present because this function is very hot and so\n // avoiding allocations where possible is worthwhile.\n //\n read(operation) {\n let args = operation.args;\n while (true) {\n const obj = this.parser.getObj();\n if (obj instanceof Cmd) {\n const cmd = obj.cmd;\n // Check that the command is valid\n const opSpec = EvaluatorPreprocessor.opMap[cmd];\n if (!opSpec) {\n warn(`Unknown command \"${cmd}\".`);\n continue;\n }\n\n const fn = opSpec.id;\n const numArgs = opSpec.numArgs;\n let argsLength = args !== null ? args.length : 0;\n\n // If the *previous* command wasn't a path operator, reset the heuristic\n // used with incomplete path operators below (fixes issue14917.pdf).\n if (!this._isPathOp) {\n this._numInvalidPathOPS = 0;\n }\n this._isPathOp = fn >= OPS.moveTo && fn <= OPS.endPath;\n\n if (!opSpec.variableArgs) {\n // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n if (argsLength !== numArgs) {\n const nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n const partialMsg =\n `command ${cmd}: expected ${numArgs} args, ` +\n `but received ${argsLength} args.`;\n\n // Incomplete path operators, in particular, can result in fairly\n // chaotic rendering artifacts. Hence the following heuristics is\n // used to error, rather than just warn, once a number of invalid\n // path operators have been encountered (fixes bug1443140.pdf).\n if (\n this._isPathOp &&\n ++this._numInvalidPathOPS >\n EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\n ) {\n throw new FormatError(`Invalid ${partialMsg}`);\n }\n // If we receive too few arguments, it's not possible to execute\n // the command, hence we skip the command.\n warn(`Skipping ${partialMsg}`);\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info(\n `Command ${cmd}: expected [0, ${numArgs}] args, ` +\n `but received ${argsLength} args.`\n );\n }\n\n // TODO figure out how to type-check vararg functions\n this.preprocessCommand(fn, args);\n\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (obj === EOF) {\n return false; // no more commands\n }\n // argument\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError(\"Too many arguments\");\n }\n }\n }\n }\n\n preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n }\n}\n\nexport { EvaluatorPreprocessor, PartialEvaluator };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, EOF, isCmd, Name } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Lexer } from \"./parser.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\n\nconst BUILT_IN_CMAPS = [\n // << Start unicode maps.\n \"Adobe-GB1-UCS2\",\n \"Adobe-CNS1-UCS2\",\n \"Adobe-Japan1-UCS2\",\n \"Adobe-Korea1-UCS2\",\n // >> End unicode maps.\n \"78-EUC-H\",\n \"78-EUC-V\",\n \"78-H\",\n \"78-RKSJ-H\",\n \"78-RKSJ-V\",\n \"78-V\",\n \"78ms-RKSJ-H\",\n \"78ms-RKSJ-V\",\n \"83pv-RKSJ-H\",\n \"90ms-RKSJ-H\",\n \"90ms-RKSJ-V\",\n \"90msp-RKSJ-H\",\n \"90msp-RKSJ-V\",\n \"90pv-RKSJ-H\",\n \"90pv-RKSJ-V\",\n \"Add-H\",\n \"Add-RKSJ-H\",\n \"Add-RKSJ-V\",\n \"Add-V\",\n \"Adobe-CNS1-0\",\n \"Adobe-CNS1-1\",\n \"Adobe-CNS1-2\",\n \"Adobe-CNS1-3\",\n \"Adobe-CNS1-4\",\n \"Adobe-CNS1-5\",\n \"Adobe-CNS1-6\",\n \"Adobe-GB1-0\",\n \"Adobe-GB1-1\",\n \"Adobe-GB1-2\",\n \"Adobe-GB1-3\",\n \"Adobe-GB1-4\",\n \"Adobe-GB1-5\",\n \"Adobe-Japan1-0\",\n \"Adobe-Japan1-1\",\n \"Adobe-Japan1-2\",\n \"Adobe-Japan1-3\",\n \"Adobe-Japan1-4\",\n \"Adobe-Japan1-5\",\n \"Adobe-Japan1-6\",\n \"Adobe-Korea1-0\",\n \"Adobe-Korea1-1\",\n \"Adobe-Korea1-2\",\n \"B5-H\",\n \"B5-V\",\n \"B5pc-H\",\n \"B5pc-V\",\n \"CNS-EUC-H\",\n \"CNS-EUC-V\",\n \"CNS1-H\",\n \"CNS1-V\",\n \"CNS2-H\",\n \"CNS2-V\",\n \"ETHK-B5-H\",\n \"ETHK-B5-V\",\n \"ETen-B5-H\",\n \"ETen-B5-V\",\n \"ETenms-B5-H\",\n \"ETenms-B5-V\",\n \"EUC-H\",\n \"EUC-V\",\n \"Ext-H\",\n \"Ext-RKSJ-H\",\n \"Ext-RKSJ-V\",\n \"Ext-V\",\n \"GB-EUC-H\",\n \"GB-EUC-V\",\n \"GB-H\",\n \"GB-V\",\n \"GBK-EUC-H\",\n \"GBK-EUC-V\",\n \"GBK2K-H\",\n \"GBK2K-V\",\n \"GBKp-EUC-H\",\n \"GBKp-EUC-V\",\n \"GBT-EUC-H\",\n \"GBT-EUC-V\",\n \"GBT-H\",\n \"GBT-V\",\n \"GBTpc-EUC-H\",\n \"GBTpc-EUC-V\",\n \"GBpc-EUC-H\",\n \"GBpc-EUC-V\",\n \"H\",\n \"HKdla-B5-H\",\n \"HKdla-B5-V\",\n \"HKdlb-B5-H\",\n \"HKdlb-B5-V\",\n \"HKgccs-B5-H\",\n \"HKgccs-B5-V\",\n \"HKm314-B5-H\",\n \"HKm314-B5-V\",\n \"HKm471-B5-H\",\n \"HKm471-B5-V\",\n \"HKscs-B5-H\",\n \"HKscs-B5-V\",\n \"Hankaku\",\n \"Hiragana\",\n \"KSC-EUC-H\",\n \"KSC-EUC-V\",\n \"KSC-H\",\n \"KSC-Johab-H\",\n \"KSC-Johab-V\",\n \"KSC-V\",\n \"KSCms-UHC-H\",\n \"KSCms-UHC-HW-H\",\n \"KSCms-UHC-HW-V\",\n \"KSCms-UHC-V\",\n \"KSCpc-EUC-H\",\n \"KSCpc-EUC-V\",\n \"Katakana\",\n \"NWP-H\",\n \"NWP-V\",\n \"RKSJ-H\",\n \"RKSJ-V\",\n \"Roman\",\n \"UniCNS-UCS2-H\",\n \"UniCNS-UCS2-V\",\n \"UniCNS-UTF16-H\",\n \"UniCNS-UTF16-V\",\n \"UniCNS-UTF32-H\",\n \"UniCNS-UTF32-V\",\n \"UniCNS-UTF8-H\",\n \"UniCNS-UTF8-V\",\n \"UniGB-UCS2-H\",\n \"UniGB-UCS2-V\",\n \"UniGB-UTF16-H\",\n \"UniGB-UTF16-V\",\n \"UniGB-UTF32-H\",\n \"UniGB-UTF32-V\",\n \"UniGB-UTF8-H\",\n \"UniGB-UTF8-V\",\n \"UniJIS-UCS2-H\",\n \"UniJIS-UCS2-HW-H\",\n \"UniJIS-UCS2-HW-V\",\n \"UniJIS-UCS2-V\",\n \"UniJIS-UTF16-H\",\n \"UniJIS-UTF16-V\",\n \"UniJIS-UTF32-H\",\n \"UniJIS-UTF32-V\",\n \"UniJIS-UTF8-H\",\n \"UniJIS-UTF8-V\",\n \"UniJIS2004-UTF16-H\",\n \"UniJIS2004-UTF16-V\",\n \"UniJIS2004-UTF32-H\",\n \"UniJIS2004-UTF32-V\",\n \"UniJIS2004-UTF8-H\",\n \"UniJIS2004-UTF8-V\",\n \"UniJISPro-UCS2-HW-V\",\n \"UniJISPro-UCS2-V\",\n \"UniJISPro-UTF8-V\",\n \"UniJISX0213-UTF32-H\",\n \"UniJISX0213-UTF32-V\",\n \"UniJISX02132004-UTF32-H\",\n \"UniJISX02132004-UTF32-V\",\n \"UniKS-UCS2-H\",\n \"UniKS-UCS2-V\",\n \"UniKS-UTF16-H\",\n \"UniKS-UTF16-V\",\n \"UniKS-UTF32-H\",\n \"UniKS-UTF32-V\",\n \"UniKS-UTF8-H\",\n \"UniKS-UTF8-V\",\n \"V\",\n \"WP-Symbol\",\n];\n\n// Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\n// large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\nconst MAX_MAP_RANGE = 2 ** 24 - 1; // = 0xFFFFFF\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n constructor(builtInCMap = false) {\n // Codespace ranges are stored as follows:\n // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n // Map entries have one of two forms.\n // - cid chars are 16-bit unsigned integers, stored as integers.\n // - bf chars are variable-length byte sequences, stored as strings, with\n // one byte per character.\n this._map = [];\n this.name = \"\";\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n }\n\n mapCidRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n }\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n }\n\n mapBfRange(low, high, dstLow) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n }\n const lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented (in the normal case).\n const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n if (nextCharCode > 0xff) {\n dstLow =\n dstLow.substring(0, lastByte - 1) +\n String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\n \"\\x00\";\n continue;\n }\n dstLow =\n dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n }\n }\n\n mapBfRangeToArray(low, high, array) {\n if (high - low > MAX_MAP_RANGE) {\n throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n }\n const ii = array.length;\n let i = 0;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n }\n\n // This is used for both bf and cid chars.\n mapOne(src, dst) {\n this._map[src] = dst;\n }\n\n lookup(code) {\n return this._map[code];\n }\n\n contains(code) {\n return this._map[code] !== undefined;\n }\n\n forEach(callback) {\n // Most maps have fewer than 65536 entries, and for those we use normal\n // array iteration. But really sparse tables are possible -- e.g. with\n // indices in the *billions*. For such tables we use for..in, which isn't\n // ideal because it stringifies the indices for all present elements, but\n // it does avoid iterating over every undefined entry.\n const map = this._map;\n const length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (const i in map) {\n callback(i, map[i]);\n }\n }\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n getMap() {\n return this._map;\n }\n\n readCharCode(str, offset, out) {\n let c = 0;\n const codespaceRanges = this.codespaceRanges;\n // 9.7.6.2 CMap Mapping\n // The code length is at most 4.\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n }\n\n getCharCodeLength(charCode) {\n const codespaceRanges = this.codespaceRanges;\n for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n // Check each codespace range to see if it falls within.\n const codespaceRange = codespaceRanges[n];\n for (let k = 0, kk = codespaceRange.length; k < kk; ) {\n const low = codespaceRange[k++];\n const high = codespaceRange[k++];\n if (charCode >= low && charCode <= high) {\n return n + 1;\n }\n }\n }\n return 1;\n }\n\n get length() {\n return this._map.length;\n }\n\n get isIdentityCMap() {\n if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (let i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n constructor(vertical, n) {\n super();\n\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n\n mapCidRange(low, high, dstLow) {\n unreachable(\"should not call mapCidRange\");\n }\n\n mapBfRange(low, high, dstLow) {\n unreachable(\"should not call mapBfRange\");\n }\n\n mapBfRangeToArray(low, high, array) {\n unreachable(\"should not call mapBfRangeToArray\");\n }\n\n mapOne(src, dst) {\n unreachable(\"should not call mapCidOne\");\n }\n\n lookup(code) {\n return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n }\n\n contains(code) {\n return Number.isInteger(code) && code <= 0xffff;\n }\n\n forEach(callback) {\n for (let i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n }\n\n charCodeOf(value) {\n return Number.isInteger(value) && value <= 0xffff ? value : -1;\n }\n\n getMap() {\n // Sometimes identity maps must be instantiated, but it's rare.\n const map = new Array(0x10000);\n for (let i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n }\n\n get length() {\n return 0x10000;\n }\n\n // eslint-disable-next-line getter-return\n get isIdentityCMap() {\n unreachable(\"should not access .isIdentityCMap\");\n }\n}\n\nconst BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n let n = 0;\n for (let i = 0; i <= size; i++) {\n n = (n << 8) | a[i];\n }\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n // This code is hot. Special-case some common values to avoid creating an\n // object with subarray().\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n let c = 0;\n for (let i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n let c = 1;\n for (let i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n const MAX_NUM_SIZE = 16;\n const MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n class BinaryCMapStream {\n constructor(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n }\n\n readNumber() {\n let n = 0;\n let last;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n n = (n << 7) | (b & 0x7f);\n } while (!last);\n return n;\n }\n\n readSigned() {\n const n = this.readNumber();\n return n & 1 ? ~(n >>> 1) : n >>> 1;\n }\n\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n this.pos += size + 1;\n }\n\n readHexNumber(num, size) {\n let last;\n const stack = this.tmpBuf;\n let sp = 0;\n do {\n const b = this.readByte();\n if (b < 0) {\n throw new FormatError(\"unexpected EOF in bcmap\");\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7f;\n } while (!last);\n let i = size,\n buffer = 0,\n bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer |= stack[--sp] << bufferSize;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n }\n\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n const sign = num[size] & 1 ? 255 : 0;\n let c = 0;\n for (let i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n }\n\n readString() {\n const len = this.readNumber();\n let s = \"\";\n for (let i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n }\n }\n\n // eslint-disable-next-line no-shadow\n class BinaryCMapReader {\n async process(data, cMap, extend) {\n const stream = new BinaryCMapStream(data);\n const header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n let useCMap = null;\n const start = new Uint8Array(MAX_NUM_SIZE);\n const end = new Uint8Array(MAX_NUM_SIZE);\n const char = new Uint8Array(MAX_NUM_SIZE);\n const charCode = new Uint8Array(MAX_NUM_SIZE);\n const tmp = new Uint8Array(MAX_NUM_SIZE);\n let code;\n\n let b;\n while ((b = stream.readByte()) >= 0) {\n const type = b >> 5;\n if (type === 7) {\n // metadata, e.g. comment or usecmap\n switch (b & 0x1f) {\n case 0:\n stream.readString(); // skipping comment\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n const sequence = !!(b & 0x10);\n const dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n }\n\n const ucs2DataSize = 1;\n const subitemsCount = stream.readNumber();\n switch (type) {\n case 0: // codespacerange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(\n dataSize + 1,\n hexToInt(start, dataSize),\n hexToInt(end, dataSize)\n );\n }\n break;\n case 1: // notdefrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // undefined range, skipping\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n stream.readNumber(); // code\n // nop\n }\n break;\n case 2: // cidchar\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3: // cidrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(\n hexToInt(start, dataSize),\n hexToInt(end, dataSize),\n code\n );\n }\n break;\n case 4: // bfchar\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(\n hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n case 5: // bfrange\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n for (let i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(\n hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize)\n );\n }\n break;\n default:\n throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n }\n }\n\n if (useCMap) {\n return extend(useCMap);\n }\n return cMap;\n }\n }\n\n return BinaryCMapReader;\n})();\n\nconst CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n let a = 0;\n for (let i = 0; i < str.length; i++) {\n a = (a << 8) | str.charCodeAt(i);\n }\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (typeof obj !== \"string\") {\n throw new FormatError(\"Malformed CMap: expected string.\");\n }\n }\n\n function expectInt(obj) {\n if (!Number.isInteger(obj)) {\n throw new FormatError(\"Malformed CMap: expected int.\");\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endbfrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n if (Number.isInteger(obj) || typeof obj === \"string\") {\n const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, \"[\")) {\n obj = lexer.getObj();\n const array = [];\n while (!isCmd(obj, \"]\") && obj !== EOF) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError(\"Invalid bf range.\");\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidchar\")) {\n return;\n }\n expectString(obj);\n const src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcidrange\")) {\n return;\n }\n expectString(obj);\n const low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n const high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n const dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n let obj = lexer.getObj();\n if (obj === EOF) {\n break;\n }\n if (isCmd(obj, \"endcodespacerange\")) {\n return;\n }\n if (typeof obj !== \"string\") {\n break;\n }\n const low = strToInt(obj);\n obj = lexer.getObj();\n if (typeof obj !== \"string\") {\n break;\n }\n const high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError(\"Invalid codespace range.\");\n }\n\n function parseWMode(cMap, lexer) {\n const obj = lexer.getObj();\n if (Number.isInteger(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n const obj = lexer.getObj();\n if (obj instanceof Name) {\n cMap.name = obj.name;\n }\n }\n\n async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n let previous, embeddedUseCMap;\n objLoop: while (true) {\n try {\n const obj = lexer.getObj();\n if (obj === EOF) {\n break;\n } else if (obj instanceof Name) {\n if (obj.name === \"WMode\") {\n parseWMode(cMap, lexer);\n } else if (obj.name === \"CMapName\") {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (obj instanceof Cmd) {\n switch (obj.cmd) {\n case \"endcmap\":\n break objLoop;\n case \"usecmap\":\n if (previous instanceof Name) {\n embeddedUseCMap = previous.name;\n }\n break;\n case \"begincodespacerange\":\n parseCodespaceRange(cMap, lexer);\n break;\n case \"beginbfchar\":\n parseBfChar(cMap, lexer);\n break;\n case \"begincidchar\":\n parseCidChar(cMap, lexer);\n break;\n case \"beginbfrange\":\n parseBfRange(cMap, lexer);\n break;\n case \"begincidrange\":\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Invalid cMap data: \" + ex);\n continue;\n }\n }\n\n if (!useCMap && embeddedUseCMap) {\n // Load the useCMap definition from the file only if there wasn't one\n // specified.\n useCMap = embeddedUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return cMap;\n }\n\n async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n // If there aren't any code space ranges defined clone all the parent ones\n // into this cMap.\n if (cMap.numCodespaceRanges === 0) {\n const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (let i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n // Merge the map into the current one, making sure not to override\n // any previously defined entries.\n cMap.useCMap.forEach(function (key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n\n return cMap;\n }\n\n async function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === \"Identity-H\") {\n return new IdentityCMap(false, 2);\n } else if (name === \"Identity-V\") {\n return new IdentityCMap(true, 2);\n }\n if (!BUILT_IN_CMAPS.includes(name)) {\n throw new Error(\"Unknown CMap name: \" + name);\n }\n if (!fetchBuiltInCMap) {\n throw new Error(\"Built-in CMap parameters are not provided.\");\n }\n\n const { cMapData, compressionType } = await fetchBuiltInCMap(name);\n const cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n const lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n throw new Error(`Invalid CMap \"compressionType\" value: ${compressionType}`);\n }\n\n return {\n async create(params) {\n const encoding = params.encoding;\n const fetchBuiltInCMap = params.fetchBuiltInCMap;\n const useCMap = params.useCMap;\n\n if (encoding instanceof Name) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (encoding instanceof BaseStream) {\n const parsedCMap = await parseCMap(\n /* cMap = */ new CMap(),\n /* lexer = */ new Lexer(encoding),\n fetchBuiltInCMap,\n useCMap\n );\n\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n }\n throw new Error(\"Encoding required.\");\n },\n };\n})();\n\nexport { CMap, CMapFactory, IdentityCMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n warn,\n} from \"../shared/util.js\";\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \"./primitives.js\";\nimport {\n isWhiteSpace,\n MissingDataException,\n ParserEOFException,\n} from \"./core_utils.js\";\nimport { Ascii85Stream } from \"./ascii_85_stream.js\";\nimport { AsciiHexStream } from \"./ascii_hex_stream.js\";\nimport { CCITTFaxStream } from \"./ccitt_stream.js\";\nimport { FlateStream } from \"./flate_stream.js\";\nimport { Jbig2Stream } from \"./jbig2_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxStream } from \"./jpx_stream.js\";\nimport { LZWStream } from \"./lzw_stream.js\";\nimport { NullStream } from \"./stream.js\";\nimport { PredictorStream } from \"./predictor_stream.js\";\nimport { RunLengthStream } from \"./run_length_stream.js\";\n\nconst MAX_LENGTH_TO_CACHE = 1000;\n\nfunction getInlineImageCacheKey(bytes) {\n const strBuf = [],\n ii = bytes.length;\n let i = 0;\n while (i < ii - 1) {\n strBuf.push((bytes[i++] << 8) | bytes[i++]);\n }\n // Handle an odd number of elements.\n if (i < ii) {\n strBuf.push(bytes[i]);\n }\n // We purposely include the \"raw\" length in the cacheKey, to prevent any\n // possible issues with hash collisions in the inline image cache.\n // Here we also assume that `strBuf` is never larger than 8192 elements,\n // please refer to the `bytesToString` implementation.\n return ii + \"_\" + String.fromCharCode.apply(null, strBuf);\n}\n\nclass Parser {\n constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\n this.lexer = lexer;\n this.xref = xref;\n this.allowStreams = allowStreams;\n this.recoveryMode = recoveryMode;\n\n this.imageCache = Object.create(null);\n this._imageId = 0;\n this.refill();\n }\n\n refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n }\n\n shift() {\n if (this.buf2 instanceof Cmd && this.buf2.cmd === \"ID\") {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n }\n\n tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n // Upon failure, the caller should reset this.lexer.pos to a known good\n // state and call this.shift() twice to reset the buffers.\n return false;\n }\n }\n\n getObj(cipherTransform = null) {\n const buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case \"BI\": // inline image\n return this.makeInlineImage(cipherTransform);\n case \"[\": // array\n const array = [];\n while (!isCmd(this.buf1, \"]\") && this.buf1 !== EOF) {\n array.push(this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return array;\n }\n throw new ParserEOFException(\"End of file inside array.\");\n }\n this.shift();\n return array;\n case \"<<\": // dictionary or stream\n const dict = new Dict(this.xref);\n while (!isCmd(this.buf1, \">>\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n info(\"Malformed dictionary: key must be a name object\");\n this.shift();\n continue;\n }\n\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (this.buf1 === EOF) {\n if (this.recoveryMode) {\n return dict;\n }\n throw new ParserEOFException(\"End of file inside dictionary.\");\n }\n\n // Stream objects are not allowed inside content streams or\n // object streams.\n if (isCmd(this.buf2, \"stream\")) {\n return this.allowStreams\n ? this.makeStream(dict, cipherTransform)\n : dict;\n }\n this.shift();\n return dict;\n default: // simple object\n return buf1;\n }\n }\n\n if (Number.isInteger(buf1)) {\n // indirect reference or integer\n if (Number.isInteger(this.buf1) && isCmd(this.buf2, \"R\")) {\n const ref = Ref.get(buf1, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return buf1;\n }\n\n if (typeof buf1 === \"string\") {\n if (cipherTransform) {\n return cipherTransform.decryptString(buf1);\n }\n return buf1;\n }\n\n // simple object\n return buf1;\n }\n\n /**\n * Find the end of the stream by searching for the /EI\\s/.\n * @returns {number} The inline stream length.\n */\n findDefaultInlineStreamEnd(stream) {\n const E = 0x45,\n I = 0x49,\n SPACE = 0x20,\n LF = 0xa,\n CR = 0xd,\n NUL = 0x0;\n const lexer = this.lexer,\n startPos = stream.pos,\n n = 10;\n let state = 0,\n ch,\n maybeEIPos;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n }\n if (ch === SPACE || ch === LF || ch === CR) {\n maybeEIPos = stream.pos;\n // Let's check that the next `n` bytes are ASCII... just to be sure.\n const followingBytes = stream.peekBytes(n);\n for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n ch = followingBytes[i];\n if (ch === NUL && followingBytes[i + 1] !== NUL) {\n // NUL bytes are not supposed to occur *outside* of inline\n // images, but some PDF generators violate that assumption,\n // thus breaking the EI detection heuristics used below.\n //\n // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n // since that *could* result in inline images being truncated.\n //\n // To attempt to address this, we'll still treat any *sequence*\n // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n // continue checking the `followingBytes` (fixes issue8823.pdf).\n continue;\n }\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n // it's binary stuff. Resetting the state.\n state = 0;\n break;\n }\n }\n\n if (state !== 2) {\n continue;\n }\n // Check that the \"EI\" sequence isn't part of the image data, since\n // that would cause the image to be truncated (fixes issue11124.pdf).\n if (lexer.knownCommands) {\n const nextObj = lexer.peekObj();\n if (nextObj instanceof Cmd && !lexer.knownCommands[nextObj.cmd]) {\n // Not a valid command, i.e. the inline image data *itself*\n // contains an \"EI\" sequence. Resetting the state.\n state = 0;\n }\n } else {\n warn(\n \"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\"\n );\n }\n\n if (state === 2) {\n break; // Finished!\n }\n } else {\n state = 0;\n }\n }\n }\n\n if (ch === -1) {\n warn(\n \"findDefaultInlineStreamEnd: \" +\n \"Reached the end of the stream without finding a valid EI marker\"\n );\n if (maybeEIPos) {\n warn('... trying to recover by using the last \"EI\" occurrence.');\n stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n }\n }\n\n let endOffset = 4;\n stream.skip(-endOffset); // Set the stream position to just before \"EI\".\n ch = stream.peekByte();\n stream.skip(endOffset); // ... and remember to reset the stream position.\n\n // Ensure that we don't accidentally truncate the inline image, when the\n // data is immediately followed by the \"EI\" marker (fixes issue10388.pdf).\n if (!isWhiteSpace(ch)) {\n endOffset--;\n }\n return stream.pos - endOffset - startPos;\n }\n\n /**\n * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n * @returns {number} The inline stream length.\n */\n findDCTDecodeInlineStreamEnd(stream) {\n const startPos = stream.pos;\n let foundEOI = false,\n b,\n markerLength;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xff) {\n // Not a valid marker.\n continue;\n }\n switch (stream.getByte()) {\n case 0x00: // Byte stuffing.\n // 0xFF00 appears to be a very common byte sequence in JPEG images.\n break;\n\n case 0xff: // Fill byte.\n // Avoid skipping a valid marker, resetting the stream position.\n stream.skip(-1);\n break;\n\n case 0xd9: // EOI\n foundEOI = true;\n break;\n\n case 0xc0: // SOF0\n case 0xc1: // SOF1\n case 0xc2: // SOF2\n case 0xc3: // SOF3\n /* falls through */\n case 0xc5: // SOF5\n case 0xc6: // SOF6\n case 0xc7: // SOF7\n /* falls through */\n case 0xc9: // SOF9\n case 0xca: // SOF10\n case 0xcb: // SOF11\n /* falls through */\n case 0xcd: // SOF13\n case 0xce: // SOF14\n case 0xcf: // SOF15\n /* falls through */\n case 0xc4: // DHT\n case 0xcc: // DAC\n /* falls through */\n case 0xda: // SOS\n case 0xdb: // DQT\n case 0xdc: // DNL\n case 0xdd: // DRI\n case 0xde: // DHP\n case 0xdf: // EXP\n /* falls through */\n case 0xe0: // APP0\n case 0xe1: // APP1\n case 0xe2: // APP2\n case 0xe3: // APP3\n case 0xe4: // APP4\n case 0xe5: // APP5\n case 0xe6: // APP6\n case 0xe7: // APP7\n case 0xe8: // APP8\n case 0xe9: // APP9\n case 0xea: // APP10\n case 0xeb: // APP11\n case 0xec: // APP12\n case 0xed: // APP13\n case 0xee: // APP14\n case 0xef: // APP15\n /* falls through */\n case 0xfe: // COM\n // The marker should be followed by the length of the segment.\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n // |markerLength| contains the byte length of the marker segment,\n // including its own length (2 bytes) and excluding the marker.\n stream.skip(markerLength - 2); // Jump to the next marker.\n } else {\n // The marker length is invalid, resetting the stream position.\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (b === -1) {\n warn(\n \"Inline DCTDecode image stream: \" +\n \"EOI marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCII85DecodeInlineStreamEnd(stream) {\n const TILDE = 0x7e,\n GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE) {\n const tildePos = stream.pos;\n\n ch = stream.peekByte();\n // Handle corrupt PDF documents which contains whitespace \"inside\" of\n // the EOD marker (fixes issue10614.pdf).\n while (isWhiteSpace(ch)) {\n stream.skip();\n ch = stream.peekByte();\n }\n if (ch === GT) {\n stream.skip();\n break;\n }\n // Handle corrupt PDF documents which contains truncated EOD markers,\n // where the '>' character is missing (fixes issue11385.pdf).\n if (stream.pos > tildePos) {\n const maybeEI = stream.peekBytes(2);\n if (maybeEI[0] === /* E = */ 0x45 && maybeEI[1] === /* I = */ 0x49) {\n break;\n }\n }\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCII85Decode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCIIHexDecodeInlineStreamEnd(stream) {\n const GT = 0x3e;\n const startPos = stream.pos;\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n const length = stream.pos - startPos;\n if (ch === -1) {\n warn(\n \"Inline ASCIIHexDecode image stream: \" +\n \"EOD marker not found, searching for /EI/ instead.\"\n );\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n }\n\n /**\n * Skip over the /EI/ for streams where we search for an EOD marker.\n */\n inlineStreamSkipEI(stream) {\n const E = 0x45,\n I = 0x49;\n let state = 0,\n ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = ch === E ? 1 : 0;\n } else if (state === 1) {\n state = ch === I ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n }\n\n makeInlineImage(cipherTransform) {\n const lexer = this.lexer;\n const stream = lexer.stream;\n\n // Parse dictionary, but initialize it lazily to improve performance with\n // cached inline images (see issue 2618).\n const dictMap = Object.create(null);\n let dictLength;\n while (!isCmd(this.buf1, \"ID\") && this.buf1 !== EOF) {\n if (!(this.buf1 instanceof Name)) {\n throw new FormatError(\"Dictionary key must be a name object\");\n }\n const key = this.buf1.name;\n this.shift();\n if (this.buf1 === EOF) {\n break;\n }\n dictMap[key] = this.getObj(cipherTransform);\n }\n if (lexer.beginInlineImagePos !== -1) {\n dictLength = stream.pos - lexer.beginInlineImagePos;\n }\n\n // Extract the name of the first (i.e. the current) image filter.\n const filter = this.xref.fetchIfRef(dictMap.F || dictMap.Filter);\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = this.xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n\n // Parse image stream.\n const startPos = stream.pos;\n let length;\n switch (filterName) {\n case \"DCT\":\n case \"DCTDecode\":\n length = this.findDCTDecodeInlineStreamEnd(stream);\n break;\n case \"A85\":\n case \"ASCII85Decode\":\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n break;\n case \"AHx\":\n case \"ASCIIHexDecode\":\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n break;\n default:\n length = this.findDefaultInlineStreamEnd(stream);\n }\n\n // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n // stringified content, to prevent possible hash collisions.\n let cacheKey;\n if (length < MAX_LENGTH_TO_CACHE && dictLength > 0) {\n const initialStreamPos = stream.pos;\n // Set the stream position to the beginning of the dictionary data...\n stream.pos = lexer.beginInlineImagePos;\n // ... and fetch the bytes of the dictionary *and* the inline image.\n cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length));\n // Finally, don't forget to reset the stream position.\n stream.pos = initialStreamPos;\n\n const cacheEntry = this.imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n cacheEntry.reset();\n return cacheEntry;\n }\n }\n\n const dict = new Dict(this.xref);\n for (const key in dictMap) {\n dict.set(key, dictMap[key]);\n }\n let imageStream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (cacheKey !== undefined) {\n imageStream.cacheKey = `inline_img_${++this._imageId}`;\n this.imageCache[cacheKey] = imageStream;\n }\n\n this.buf2 = Cmd.get(\"EI\");\n this.shift();\n\n return imageStream;\n }\n\n _findStreamLength(startPos, signature) {\n const { stream } = this.lexer;\n stream.pos = startPos;\n\n const SCAN_BLOCK_LENGTH = 2048;\n const signatureLength = signature.length;\n\n while (stream.pos < stream.end) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n const scanLength = scanBytes.length - signatureLength;\n\n if (scanLength <= 0) {\n break;\n }\n let pos = 0;\n while (pos < scanLength) {\n let j = 0;\n while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found.\n stream.pos += pos;\n return stream.pos - startPos;\n }\n pos++;\n }\n stream.pos += scanLength;\n }\n return -1;\n }\n\n makeStream(dict, cipherTransform) {\n const lexer = this.lexer;\n let stream = lexer.stream;\n\n // Get the stream's start position.\n lexer.skipToNextLine();\n const startPos = stream.pos - 1;\n\n // Get the length.\n let length = dict.get(\"Length\");\n if (!Number.isInteger(length)) {\n info(`Bad length \"${length && length.toString()}\" in stream.`);\n length = 0;\n }\n\n // Skip over the stream data.\n stream.pos = startPos + length;\n lexer.nextChar();\n\n // Shift '>>' and check whether the new object marks the end of the stream.\n if (this.tryShift() && isCmd(this.buf2, \"endstream\")) {\n this.shift(); // 'stream'\n } else {\n // Bad stream length, scanning for endstream command.\n const ENDSTREAM_SIGNATURE = new Uint8Array([\n 0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,\n ]);\n let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n if (actualLength < 0) {\n // Only allow limited truncation of the endstream signature,\n // to prevent false positives.\n const MAX_TRUNCATION = 1;\n // Check if the PDF generator included truncated endstream commands,\n // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n for (let i = 1; i <= MAX_TRUNCATION; i++) {\n const end = ENDSTREAM_SIGNATURE.length - i;\n const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n const maybeLength = this._findStreamLength(\n startPos,\n TRUNCATED_SIGNATURE\n );\n if (maybeLength >= 0) {\n // Ensure that the byte immediately following the truncated\n // endstream command is a space, to prevent false positives.\n const lastByte = stream.peekBytes(end + 1)[end];\n if (!isWhiteSpace(lastByte)) {\n break;\n }\n info(\n `Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n \"searching for endstream command.\"\n );\n actualLength = maybeLength;\n break;\n }\n }\n\n if (actualLength < 0) {\n throw new FormatError(\"Missing endstream command.\");\n }\n }\n length = actualLength;\n\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift(); // 'endstream'\n\n stream = stream.makeSubStream(startPos, length, dict);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n }\n\n filter(stream, dict, length) {\n let filter = dict.get(\"F\", \"Filter\");\n let params = dict.get(\"DP\", \"DecodeParms\");\n\n if (filter instanceof Name) {\n if (Array.isArray(params)) {\n warn(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n }\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n let maybeLength = length;\n if (Array.isArray(filter)) {\n const filterArray = filter;\n const paramsArray = params;\n for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n if (!(filter instanceof Name)) {\n throw new FormatError(`Bad filter name \"${filter}\"`);\n }\n\n params = null;\n if (Array.isArray(paramsArray) && i in paramsArray) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n // After the first stream the `length` variable is invalid.\n maybeLength = null;\n }\n }\n return stream;\n }\n\n makeFilter(stream, name, maybeLength, params) {\n // Since the 'Length' entry in the stream dictionary can be completely\n // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n // when we can be absolutely certain that it actually is empty.\n if (maybeLength === 0) {\n warn(`Empty \"${name}\" stream.`);\n return new NullStream();\n }\n\n try {\n switch (name) {\n case \"Fl\":\n case \"FlateDecode\":\n if (params) {\n return new PredictorStream(\n new FlateStream(stream, maybeLength),\n maybeLength,\n params\n );\n }\n return new FlateStream(stream, maybeLength);\n case \"LZW\":\n case \"LZWDecode\":\n let earlyChange = 1;\n if (params) {\n if (params.has(\"EarlyChange\")) {\n earlyChange = params.get(\"EarlyChange\");\n }\n return new PredictorStream(\n new LZWStream(stream, maybeLength, earlyChange),\n maybeLength,\n params\n );\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n case \"DCT\":\n case \"DCTDecode\":\n return new JpegStream(stream, maybeLength, params);\n case \"JPX\":\n case \"JPXDecode\":\n return new JpxStream(stream, maybeLength, params);\n case \"A85\":\n case \"ASCII85Decode\":\n return new Ascii85Stream(stream, maybeLength);\n case \"AHx\":\n case \"ASCIIHexDecode\":\n return new AsciiHexStream(stream, maybeLength);\n case \"CCF\":\n case \"CCITTFaxDecode\":\n return new CCITTFaxStream(stream, maybeLength, params);\n case \"RL\":\n case \"RunLengthDecode\":\n return new RunLengthStream(stream, maybeLength);\n case \"JBIG2Decode\":\n return new Jbig2Stream(stream, maybeLength, params);\n }\n warn(`Filter \"${name}\" is not supported.`);\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Invalid stream: \"${ex}\"`);\n return new NullStream();\n }\n }\n}\n\n// A '1' in this array means the character is white space. A '1' or\n// '2' means the character ends a name or command.\n// prettier-ignore\nconst specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx\n];\n\nfunction toHexDigit(ch) {\n if (ch >= /* '0' = */ 0x30 && ch /* '9' = */ <= 0x39) {\n return ch & 0x0f;\n }\n if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'F' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'f' = */ 0x66)\n ) {\n return (ch & 0x0f) + 9;\n }\n return -1;\n}\n\nclass Lexer {\n constructor(stream, knownCommands = null) {\n this.stream = stream;\n this.nextChar();\n\n // While lexing, we build up many strings one char at a time. Using += for\n // this can result in lots of garbage strings. It's better to build an\n // array of single-char strings and then join() them together at the end.\n // And reusing a single array (i.e. |this.strBuf|) over and over for this\n // purpose uses less memory than using a new array for each string.\n this.strBuf = [];\n\n // The PDFs might have \"glued\" commands with other commands, operands or\n // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n // commands and their prefixes. The prefixes are built the following way:\n // if there a command that is a prefix of the other valid command or\n // literal (e.g. 'f' and 'false') the following prefixes must be included,\n // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n // other commands or literals as a prefix. The knowCommands is optional.\n this.knownCommands = knownCommands;\n\n this._hexStringNumWarn = 0;\n this.beginInlineImagePos = -1;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n peekChar() {\n return this.stream.peekByte();\n }\n\n getNumber() {\n let ch = this.currentChar;\n let eNotation = false;\n let divideBy = 0; // Different from 0 if it's a floating point value.\n let sign = 0;\n\n if (ch === /* '-' = */ 0x2d) {\n sign = -1;\n ch = this.nextChar();\n\n if (ch === /* '-' = */ 0x2d) {\n // Ignore double negative (this is consistent with Adobe Reader).\n ch = this.nextChar();\n }\n } else if (ch === /* '+' = */ 0x2b) {\n sign = 1;\n ch = this.nextChar();\n }\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n // Ignore line-breaks (this is consistent with Adobe Reader).\n do {\n ch = this.nextChar();\n } while (ch === 0x0a || ch === 0x0d);\n }\n if (ch === /* '.' = */ 0x2e) {\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\n\n if (isWhiteSpace(ch) || ch === /* EOF = */ -1) {\n // This is consistent with Adobe Reader (fixes issue9252.pdf,\n // issue15604.pdf, bug1753983.pdf).\n info(`Lexer.getNumber - \"${msg}\".`);\n return 0;\n }\n throw new FormatError(msg);\n }\n\n sign = sign || 1;\n let baseValue = ch - 0x30; // '0'\n let powerValue = 0;\n let powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n const currentDigit = ch - 0x30; // '0'\n if (eNotation) {\n // We are after an 'e' or 'E'.\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) {\n // We are after a point.\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === /* '.' = */ 0x2e) {\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n // A number can have only one dot.\n break;\n }\n } else if (ch === /* '-' = */ 0x2d) {\n // Ignore minus signs in the middle of numbers to match\n // Adobe's behavior.\n warn(\"Badly formatted number: minus sign in the middle\");\n } else if (ch === /* 'E' = */ 0x45 || ch === /* 'e' = */ 0x65) {\n // 'E' can be either a scientific notation or the beginning of a new\n // operator.\n ch = this.peekChar();\n if (ch === /* '+' = */ 0x2b || ch === /* '-' = */ 0x2d) {\n powerValueSign = ch === 0x2d ? -1 : 1;\n this.nextChar(); // Consume the sign character.\n } else if (ch < /* '0' = */ 0x30 || ch > /* '9' = */ 0x39) {\n // The 'E' must be the beginning of a new operator.\n break;\n }\n eNotation = true;\n } else {\n // The last character doesn't belong to us.\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= 10 ** (powerValueSign * powerValue);\n }\n return sign * baseValue;\n }\n\n getString() {\n let numParen = 1;\n let done = false;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n let ch = this.nextChar();\n while (true) {\n let charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x28: // '('\n ++numParen;\n strBuf.push(\"(\");\n break;\n case 0x29: // ')'\n if (--numParen === 0) {\n this.nextChar(); // consume strings ')'\n done = true;\n } else {\n strBuf.push(\")\");\n }\n break;\n case 0x5c: // '\\\\'\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn(\"Unterminated string\");\n done = true;\n break;\n case 0x6e: // 'n'\n strBuf.push(\"\\n\");\n break;\n case 0x72: // 'r'\n strBuf.push(\"\\r\");\n break;\n case 0x74: // 't'\n strBuf.push(\"\\t\");\n break;\n case 0x62: // 'b'\n strBuf.push(\"\\b\");\n break;\n case 0x66: // 'f'\n strBuf.push(\"\\f\");\n break;\n case 0x5c: // '\\'\n case 0x28: // '('\n case 0x29: // ')'\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n let x = ch & 0x0f;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '7' = */ 0x37) {\n x = (x << 3) + (ch & 0x0f);\n ch = this.nextChar();\n if (ch >= /* '0' = */ 0x30 && ch /* '7' = */ <= 0x37) {\n charBuffered = false;\n x = (x << 3) + (ch & 0x0f);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0d: // CR\n if (this.peekChar() === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n case 0x0a: // LF\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getName() {\n let ch, previousCh;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === /* '#' = */ 0x23) {\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn(\n \"Lexer_getName: \" +\n \"NUMBER SIGN (#) should be followed by a hexadecimal number.\"\n );\n strBuf.push(\"#\");\n break;\n }\n const x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n const x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn(\n `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\n \"in hexadecimal number.\"\n );\n strBuf.push(\"#\", String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode((x << 4) | x2));\n } else {\n strBuf.push(\"#\", String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n }\n return Name.get(strBuf.join(\"\"));\n }\n\n /**\n * @private\n */\n _hexStringWarn(ch) {\n const MAX_HEX_STRING_NUM_WARN = 5;\n\n if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n warn(\"getHexString - ignoring additional invalid characters.\");\n return;\n }\n if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n // Limit the number of warning messages printed for a `this.getHexString`\n // invocation, since corrupt PDF documents may otherwise spam the console\n // enough to affect general performance negatively.\n return;\n }\n warn(`getHexString - ignoring invalid character: ${ch}`);\n }\n\n getHexString() {\n const strBuf = this.strBuf;\n strBuf.length = 0;\n let ch = this.currentChar;\n let isFirstHex = true;\n let firstDigit, secondDigit;\n this._hexStringNumWarn = 0;\n\n while (true) {\n if (ch < 0) {\n warn(\"Unterminated hex string\");\n break;\n } else if (ch === /* '>' = */ 0x3e) {\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n if (firstDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n if (secondDigit === -1) {\n this._hexStringWarn(ch);\n ch = this.nextChar();\n continue;\n }\n strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return strBuf.join(\"\");\n }\n\n getObj() {\n // Skip whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === /* LF = */ 0x0a || ch === /* CR = */ 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n\n // Start reading a token.\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return this.getNumber();\n case 0x28: // '('\n return this.getString();\n case 0x2f: // '/'\n return this.getName();\n // array punctuation\n case 0x5b: // '['\n this.nextChar();\n return Cmd.get(\"[\");\n case 0x5d: // ']'\n this.nextChar();\n return Cmd.get(\"]\");\n // hex string or dict punctuation\n case 0x3c: // '<'\n ch = this.nextChar();\n if (ch === 0x3c) {\n // dict punctuation\n this.nextChar();\n return Cmd.get(\"<<\");\n }\n return this.getHexString();\n // dict punctuation\n case 0x3e: // '>'\n ch = this.nextChar();\n if (ch === 0x3e) {\n this.nextChar();\n return Cmd.get(\">>\");\n }\n return Cmd.get(\">\");\n case 0x7b: // '{'\n this.nextChar();\n return Cmd.get(\"{\");\n case 0x7d: // '}'\n this.nextChar();\n return Cmd.get(\"}\");\n case 0x29: // ')'\n // Consume the current character in order to avoid permanently hanging\n // the worker thread if `Lexer.getObj` is called from within a loop\n // containing try-catch statements, since we would otherwise attempt\n // to parse the *same* character over and over (fixes issue8061.pdf).\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n\n // Start reading a command.\n let str = String.fromCharCode(ch);\n // A valid command cannot start with a non-visible ASCII character,\n // and the next character may be (the start of) a valid command.\n if (ch < 0x20 || ch > 0x7f) {\n const nextCh = this.peekChar();\n if (nextCh >= 0x20 && nextCh <= 0x7f) {\n this.nextChar();\n return Cmd.get(str);\n }\n }\n const knownCommands = this.knownCommands;\n let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n // Stop if a known command is found and next character does not make\n // the string a command.\n const possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n if (str === \"true\") {\n return true;\n }\n if (str === \"false\") {\n return false;\n }\n if (str === \"null\") {\n return null;\n }\n\n if (str === \"BI\") {\n // Keep track of the current stream position, since it's needed in order\n // to correctly cache inline images; see `Parser.makeInlineImage`.\n this.beginInlineImagePos = this.stream.pos;\n }\n\n return Cmd.get(str);\n }\n\n peekObj() {\n const streamPos = this.stream.pos,\n currentChar = this.currentChar,\n beginInlineImagePos = this.beginInlineImagePos;\n\n let nextObj;\n try {\n nextObj = this.getObj();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`peekObj: ${ex}`);\n }\n // Ensure that we reset *all* relevant `Lexer`-instance state.\n this.stream.pos = streamPos;\n this.currentChar = currentChar;\n this.beginInlineImagePos = beginInlineImagePos;\n\n return nextObj;\n }\n\n skipToNextLine() {\n let ch = this.currentChar;\n while (ch >= 0) {\n if (ch === /* CR = */ 0x0d) {\n ch = this.nextChar();\n if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n }\n break;\n } else if (ch === /* LF = */ 0x0a) {\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n }\n}\n\nclass Linearization {\n static create(stream) {\n function getInt(linDict, name, allowZeroValue = false) {\n const obj = linDict.get(name);\n if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error(\n `The \"${name}\" parameter in the linearization ` +\n \"dictionary is invalid.\"\n );\n }\n\n function getHints(linDict) {\n const hints = linDict.get(\"H\");\n let hintsLength;\n\n if (\n Array.isArray(hints) &&\n ((hintsLength = hints.length) === 2 || hintsLength === 4)\n ) {\n for (let index = 0; index < hintsLength; index++) {\n const hint = hints[index];\n if (!(Number.isInteger(hint) && hint > 0)) {\n throw new Error(\n `Hint (${index}) in the linearization dictionary is invalid.`\n );\n }\n }\n return hints;\n }\n throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n }\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: null,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n const linDict = parser.getObj();\n let obj, length;\n if (\n !(\n Number.isInteger(obj1) &&\n Number.isInteger(obj2) &&\n isCmd(obj3, \"obj\") &&\n linDict instanceof Dict &&\n typeof (obj = linDict.get(\"Linearized\")) === \"number\" &&\n obj > 0\n )\n ) {\n return null; // No valid linearization dictionary found.\n } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n throw new Error(\n 'The \"L\" parameter in the linearization dictionary ' +\n \"does not equal the stream length.\"\n );\n }\n return {\n length,\n hints: getHints(linDict),\n objectNumberFirst: getInt(linDict, \"O\"),\n endFirst: getInt(linDict, \"E\"),\n numPages: getInt(linDict, \"N\"),\n mainXRefEntriesOffset: getInt(linDict, \"T\"),\n pageFirst: linDict.has(\"P\")\n ? getInt(linDict, \"P\", /* allowZeroValue = */ true)\n : 0,\n };\n }\n}\n\nexport { Lexer, Linearization, Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass Ascii85Stream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength *= 0.8;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n }\n\n readBlock() {\n const TILDA_CHAR = 0x7e; // '~'\n const Z_LOWER_CHAR = 0x7a; // 'z'\n const EOF = -1;\n\n const str = this.str;\n\n let c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n const bufferLength = this.bufferLength;\n let buffer, i;\n\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n } else {\n const input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isWhiteSpace(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n let t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n }\n}\n\nexport { Ascii85Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { Stream } from \"./stream.js\";\n\n// Lots of DecodeStreams are created whose buffers are never used. For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nconst emptyBuffer = new Uint8Array(0);\n\n// Super class for the decoding streams.\nclass DecodeStream extends BaseStream {\n constructor(maybeMinBufferLength) {\n super();\n this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n }\n\n ensureBuffer(requested) {\n const buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n let size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n const buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n }\n\n getByte() {\n const pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n }\n\n getBytes(length) {\n const pos = this.pos;\n let end;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n const bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n\n this.pos = end;\n return this.buffer.subarray(pos, end);\n }\n\n reset() {\n this.pos = 0;\n }\n\n makeSubStream(start, length, dict = null) {\n if (length === undefined) {\n while (!this.eof) {\n this.readBlock();\n }\n } else {\n const end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n }\n return new Stream(this.buffer, start, length, dict);\n }\n\n getBaseStreams() {\n return this.str ? this.str.getBaseStreams() : null;\n }\n}\n\nclass StreamsSequenceStream extends DecodeStream {\n constructor(streams, onError = null) {\n let maybeLength = 0;\n for (const stream of streams) {\n maybeLength +=\n stream instanceof DecodeStream\n ? stream._rawMinBufferLength\n : stream.length;\n }\n super(maybeLength);\n\n this.streams = streams;\n this._onError = onError;\n }\n\n readBlock() {\n const streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n const stream = streams.shift();\n let chunk;\n try {\n chunk = stream.getBytes();\n } catch (reason) {\n if (this._onError) {\n this._onError(reason, stream.dict && stream.dict.objId);\n return;\n }\n throw reason;\n }\n const bufferLength = this.bufferLength;\n const newLength = bufferLength + chunk.length;\n const buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n\n getBaseStreams() {\n const baseStreamsBuf = [];\n for (const stream of this.streams) {\n const baseStreams = stream.getBaseStreams();\n if (baseStreams) {\n baseStreamsBuf.push(...baseStreams);\n }\n }\n return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n }\n}\n\nexport { DecodeStream, StreamsSequenceStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass AsciiHexStream extends DecodeStream {\n constructor(str, maybeLength) {\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength *= 0.5;\n }\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n }\n\n readBlock() {\n const UPSTREAM_BLOCK_SIZE = 8000;\n const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n const maxDecodeLength = (bytes.length + 1) >> 1;\n const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n let bufferLength = this.bufferLength;\n\n let firstDigit = this.firstDigit;\n for (const ch of bytes) {\n let digit;\n if (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) {\n digit = ch & 0x0f;\n } else if (\n (ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x46) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x66)\n ) {\n digit = (ch & 0x0f) + 9;\n } else if (ch === /* '>' = */ 0x3e) {\n this.eof = true;\n break;\n } else {\n // Probably whitespace, ignoring.\n continue;\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n }\n}\n\nexport { AsciiHexStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nclass CCITTFaxStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n if (!(params instanceof Dict)) {\n params = Dict.empty;\n }\n\n const source = {\n next() {\n return str.getByte();\n },\n };\n this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n K: params.get(\"K\"),\n EndOfLine: params.get(\"EndOfLine\"),\n EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n Columns: params.get(\"Columns\"),\n Rows: params.get(\"Rows\"),\n EndOfBlock: params.get(\"EndOfBlock\"),\n BlackIs1: params.get(\"BlackIs1\"),\n });\n }\n\n readBlock() {\n while (!this.eof) {\n const c = this.ccittFaxDecoder.readNextChar();\n if (c === -1) {\n this.eof = true;\n return;\n }\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n }\n}\n\nexport { CCITTFaxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, info } from \"../shared/util.js\";\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n * or -1 when EOF is reached.\n */\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\n\n// prettier-ignore\nconst twoDimTable = [\n [-1, -1], [-1, -1], // 000000x\n [7, twoDimVertL3], // 0000010\n [7, twoDimVertR3], // 0000011\n [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n [4, twoDimPass], [4, twoDimPass], // 0001xxx\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0]\n];\n\n// prettier-ignore\nconst whiteTable1 = [\n [-1, -1], // 00000\n [12, ccittEOL], // 00001\n [-1, -1], [-1, -1], // 0001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n [11, 1792], [11, 1792], // 1000x\n [12, 1984], // 10010\n [12, 2048], // 10011\n [12, 2112], // 10100\n [12, 2176], // 10101\n [12, 2240], // 10110\n [12, 2304], // 10111\n [11, 1856], [11, 1856], // 1100x\n [11, 1920], [11, 1920], // 1101x\n [12, 2368], // 11100\n [12, 2432], // 11101\n [12, 2496], // 11110\n [12, 2560] // 11111\n];\n\n// prettier-ignore\nconst whiteTable2 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx\n [8, 29], [8, 29], // 00000010x\n [8, 30], [8, 30], // 00000011x\n [8, 45], [8, 45], // 00000100x\n [8, 46], [8, 46], // 00000101x\n [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx\n [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx\n [8, 47], [8, 47], // 00001010x\n [8, 48], [8, 48], // 00001011x\n [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx\n [6, 13], [6, 13], [6, 13], [6, 13],\n [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx\n [8, 33], [8, 33], // 00010010x\n [8, 34], [8, 34], // 00010011x\n [8, 35], [8, 35], // 00010100x\n [8, 36], [8, 36], // 00010101x\n [8, 37], [8, 37], // 00010110x\n [8, 38], [8, 38], // 00010111x\n [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx\n [8, 31], [8, 31], // 00011010x\n [8, 32], [8, 32], // 00011011x\n [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx\n [6, 1], [6, 1], [6, 1], [6, 1],\n [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx\n [6, 12], [6, 12], [6, 12], [6, 12],\n [8, 53], [8, 53], // 00100100x\n [8, 54], [8, 54], // 00100101x\n [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx\n [8, 39], [8, 39], // 00101000x\n [8, 40], [8, 40], // 00101001x\n [8, 41], [8, 41], // 00101010x\n [8, 42], [8, 42], // 00101011x\n [8, 43], [8, 43], // 00101100x\n [8, 44], [8, 44], // 00101101x\n [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx\n [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx\n [8, 61], [8, 61], // 00110010x\n [8, 62], [8, 62], // 00110011x\n [8, 63], [8, 63], // 00110100x\n [8, 0], [8, 0], // 00110101x\n [8, 320], [8, 320], // 00110110x\n [8, 384], [8, 384], // 00110111x\n [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx\n [8, 59], [8, 59], // 01001010x\n [8, 60], [8, 60], // 01001011x\n [9, 1472], // 010011000\n [9, 1536], // 010011001\n [9, 1600], // 010011010\n [9, 1728], // 010011011\n [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx\n [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx\n [8, 49], [8, 49], // 01010010x\n [8, 50], [8, 50], // 01010011x\n [8, 51], [8, 51], // 01010100x\n [8, 52], [8, 52], // 01010101x\n [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx\n [8, 55], [8, 55], // 01011000x\n [8, 56], [8, 56], // 01011001x\n [8, 57], [8, 57], // 01011010x\n [8, 58], [8, 58], // 01011011x\n [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx\n [6, 192], [6, 192], [6, 192], [6, 192],\n [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n [8, 448], [8, 448], // 01100100x\n [8, 512], [8, 512], // 01100101x\n [9, 704], // 011001100\n [9, 768], // 011001101\n [8, 640], [8, 640], // 01100111x\n [8, 576], [8, 576], // 01101000x\n [9, 832], // 011010010\n [9, 896], // 011010011\n [9, 960], // 011010100\n [9, 1024], // 011010101\n [9, 1088], // 011010110\n [9, 1152], // 011010111\n [9, 1216], // 011011000\n [9, 1280], // 011011001\n [9, 1344], // 011011010\n [9, 1408], // 011011011\n [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx\n [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx\n [6, 16], [6, 16], [6, 16], [6, 16],\n [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx\n [6, 17], [6, 17], [6, 17], [6, 17],\n [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx\n [6, 14], [6, 14], [6, 14], [6, 14],\n [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx\n [6, 15], [6, 15], [6, 15], [6, 15],\n [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7]\n];\n\n// prettier-ignore\nconst blackTable1 = [\n [-1, -1], [-1, -1], // 000000000000x\n [12, ccittEOL], [12, ccittEOL], // 000000000001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx\n [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n [12, 1984], [12, 1984], // 000000010010x\n [12, 2048], [12, 2048], // 000000010011x\n [12, 2112], [12, 2112], // 000000010100x\n [12, 2176], [12, 2176], // 000000010101x\n [12, 2240], [12, 2240], // 000000010110x\n [12, 2304], [12, 2304], // 000000010111x\n [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n [12, 2368], [12, 2368], // 000000011100x\n [12, 2432], [12, 2432], // 000000011101x\n [12, 2496], [12, 2496], // 000000011110x\n [12, 2560], [12, 2560], // 000000011111x\n [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx\n [10, 18], [10, 18], [10, 18], [10, 18],\n [12, 52], [12, 52], // 000000100100x\n [13, 640], // 0000001001010\n [13, 704], // 0000001001011\n [13, 768], // 0000001001100\n [13, 832], // 0000001001101\n [12, 55], [12, 55], // 000000100111x\n [12, 56], [12, 56], // 000000101000x\n [13, 1280], // 0000001010010\n [13, 1344], // 0000001010011\n [13, 1408], // 0000001010100\n [13, 1472], // 0000001010101\n [12, 59], [12, 59], // 000000101011x\n [12, 60], [12, 60], // 000000101100x\n [13, 1536], // 0000001011010\n [13, 1600], // 0000001011011\n [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx\n [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx\n [13, 1664], // 0000001100100\n [13, 1728], // 0000001100101\n [12, 320], [12, 320], // 000000110011x\n [12, 384], [12, 384], // 000000110100x\n [12, 448], [12, 448], // 000000110101x\n [13, 512], // 0000001101100\n [13, 576], // 0000001101101\n [12, 53], [12, 53], // 000000110111x\n [12, 54], [12, 54], // 000000111000x\n [13, 896], // 0000001110010\n [13, 960], // 0000001110011\n [13, 1024], // 0000001110100\n [13, 1088], // 0000001110101\n [13, 1152], // 0000001110110\n [13, 1216], // 0000001110111\n [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx\n [10, 64], [10, 64], [10, 64], [10, 64]\n];\n\n// prettier-ignore\nconst blackTable2 = [\n [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [11, 23], [11, 23], // 00000101000x\n [12, 50], // 000001010010\n [12, 51], // 000001010011\n [12, 44], // 000001010100\n [12, 45], // 000001010101\n [12, 46], // 000001010110\n [12, 47], // 000001010111\n [12, 57], // 000001011000\n [12, 58], // 000001011001\n [12, 61], // 000001011010\n [12, 256], // 000001011011\n [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n [12, 48], // 000001100100\n [12, 49], // 000001100101\n [12, 62], // 000001100110\n [12, 63], // 000001100111\n [12, 30], // 000001101000\n [12, 31], // 000001101001\n [12, 32], // 000001101010\n [12, 33], // 000001101011\n [12, 40], // 000001101100\n [12, 41], // 000001101101\n [11, 22], [11, 22], // 00000110111x\n [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx\n [9, 15], [9, 15], [9, 15], [9, 15],\n [12, 128], // 000011001000\n [12, 192], // 000011001001\n [12, 26], // 000011001010\n [12, 27], // 000011001011\n [12, 28], // 000011001100\n [12, 29], // 000011001101\n [11, 19], [11, 19], // 00001100111x\n [11, 20], [11, 20], // 00001101000x\n [12, 34], // 000011010010\n [12, 35], // 000011010011\n [12, 36], // 000011010100\n [12, 37], // 000011010101\n [12, 38], // 000011010110\n [12, 39], // 000011010111\n [11, 21], [11, 21], // 00001101100x\n [12, 42], // 000011011010\n [12, 43], // 000011011011\n [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx\n [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12]\n];\n\n// prettier-ignore\nconst blackTable3 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n [6, 9], // 000100\n [6, 8], // 000101\n [5, 7], [5, 7], // 00011x\n [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx\n [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx\n [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx\n [3, 1], [3, 1], [3, 1], [3, 1],\n [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx\n [3, 4], [3, 4], [3, 4], [3, 4],\n [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2]\n];\n\n/**\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n * @param {Object} [options] - Decoding options.\n */\nclass CCITTFaxDecoder {\n constructor(source, options = {}) {\n if (!source || typeof source.next !== \"function\") {\n throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n }\n this.source = source;\n this.eof = false;\n\n this.encoding = options.K || 0;\n this.eoline = options.EndOfLine || false;\n this.byteAlign = options.EncodedByteAlign || false;\n this.columns = options.Columns || 1728;\n this.rows = options.Rows || 0;\n let eoblock = options.EndOfBlock;\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n this.eoblock = eoblock;\n this.black = options.BlackIs1 || false;\n\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n this.rowsDone = false;\n\n let code1;\n while ((code1 = this._lookBits(12)) === 0) {\n this._eatBits(1);\n }\n if (code1 === 1) {\n this._eatBits(12);\n }\n if (this.encoding > 0) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n }\n\n readNextChar() {\n if (this.eof) {\n return -1;\n }\n const refLine = this.refLine;\n const codingLine = this.codingLine;\n const columns = this.columns;\n\n let refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.rowsDone) {\n this.eof = true;\n }\n if (this.eof) {\n return -1;\n }\n this.err = false;\n\n let code1, code2, code3;\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this._getTwoDimCode();\n switch (code1) {\n case twoDimPass:\n this._addPixels(refLine[refPos + 1], blackPixels);\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n break;\n case twoDimHoriz:\n code1 = code2 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n do {\n code2 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n if (codingLine[this.codingPos] < columns) {\n this._addPixels(\n codingLine[this.codingPos] + code2,\n blackPixels ^ 1\n );\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n break;\n case twoDimVertR3:\n this._addPixels(refLine[refPos] + 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR2:\n this._addPixels(refLine[refPos] + 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR1:\n this._addPixels(refLine[refPos] + 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVert0:\n this._addPixels(refLine[refPos], blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL3:\n this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL2:\n this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL1:\n this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (\n refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns\n ) {\n refPos += 2;\n }\n }\n break;\n case ccittEOF:\n this._addPixels(columns, 0);\n this.eof = true;\n break;\n default:\n info(\"bad 2d code\");\n this._addPixels(columns, 0);\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n if (blackPixels) {\n do {\n code1 += code3 = this._getBlackCode();\n } while (code3 >= 64);\n } else {\n do {\n code1 += code3 = this._getWhiteCode();\n } while (code3 >= 64);\n }\n this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n blackPixels ^= 1;\n }\n }\n\n let gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.rowsDone = true;\n } else {\n code1 = this._lookBits(12);\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this._eatBits(1);\n code1 = this._lookBits(12);\n }\n }\n if (code1 === 1) {\n this._eatBits(12);\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n this.nextLine2D = !this._lookBits(1);\n this._eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this._lookBits(12);\n if (code1 === 1) {\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this._lookBits(12);\n if (code1 !== 1) {\n info(\"bad rtc code: \" + code1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._lookBits(1);\n this._eatBits(1);\n }\n }\n }\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this._lookBits(13);\n if (code1 === ccittEOF) {\n this.eof = true;\n return -1;\n }\n if (code1 >> 1 === 1) {\n break;\n }\n this._eatBits(1);\n }\n this._eatBits(12);\n if (this.encoding > 0) {\n this._eatBits(1);\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[(this.codingPos = 0)];\n } else {\n this.outputBits = codingLine[(this.codingPos = 1)];\n }\n this.row++;\n }\n\n let c;\n if (this.outputBits >= 8) {\n c = this.codingPos & 1 ? 0 : 0xff;\n this.outputBits -= 8;\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n }\n } else {\n bits = 8;\n c = 0;\n do {\n if (typeof this.outputBits !== \"number\") {\n throw new FormatError(\n 'Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.'\n );\n }\n\n if (this.outputBits > bits) {\n c <<= bits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - bits);\n }\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n if (!(this.codingPos & 1)) {\n c |= 0xff >> (8 - this.outputBits);\n }\n bits -= this.outputBits;\n this.outputBits = 0;\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits =\n codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n if (this.black) {\n c ^= 0xff;\n }\n return c;\n }\n\n /**\n * @private\n */\n _addPixels(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n }\n\n /**\n * @private\n */\n _addPixelsNeg(a1, blackPixels) {\n const codingLine = this.codingLine;\n let codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info(\"row is wrong length\");\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n info(\"invalid code\");\n this.err = true;\n a1 = 0;\n }\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n }\n\n /**\n * This function returns the code found from the table.\n * The start and end parameters set the boundaries for searching the table.\n * The limit parameter is optional. Function returns an array with three\n * values. The first array element indicates whether a valid code is being\n * returned. The second array element is the actual code. The third array\n * element indicates whether EOF was reached.\n * @private\n */\n _findTableCode(start, end, table, limit) {\n const limitValue = limit || 0;\n for (let i = start; i <= end; ++i) {\n let code = this._lookBits(i);\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n if (i < end) {\n code <<= end - i;\n }\n if (!limitValue || code >= limitValue) {\n const p = table[code - limitValue];\n if (p[0] === i) {\n this._eatBits(i);\n return [true, p[1], true];\n }\n }\n }\n return [false, 0, false];\n }\n\n /**\n * @private\n */\n _getTwoDimCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(7);\n p = twoDimTable[code];\n if (p && p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n const result = this._findTableCode(1, 7, twoDimTable);\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n info(\"Bad two dim code\");\n return ccittEOF;\n }\n\n /**\n * @private\n */\n _getWhiteCode() {\n let code = 0;\n let p;\n if (this.eoblock) {\n code = this._lookBits(12);\n if (code === ccittEOF) {\n return 1;\n }\n\n if (code >> 5 === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(1, 9, whiteTable2);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(11, 12, whiteTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad white code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _getBlackCode() {\n let code, p;\n if (this.eoblock) {\n code = this._lookBits(13);\n if (code === ccittEOF) {\n return 1;\n }\n if (code >> 7 === 0) {\n p = blackTable1[code];\n } else if (code >> 9 === 0 && code >> 7 !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this._eatBits(p[0]);\n return p[1];\n }\n } else {\n let result = this._findTableCode(2, 6, blackTable3);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\n }\n\n result = this._findTableCode(10, 13, blackTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info(\"bad black code\");\n this._eatBits(1);\n return 1;\n }\n\n /**\n * @private\n */\n _lookBits(n) {\n let c;\n while (this.inputBits < n) {\n if ((c = this.source.next()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n return (this.inputBuf << (n - this.inputBits)) & (0xffff >> (16 - n));\n }\n this.inputBuf = (this.inputBuf << 8) | c;\n this.inputBits += 8;\n }\n return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\n }\n\n /**\n * @private\n */\n _eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n }\n}\n\nexport { CCITTFaxDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nconst codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\n]);\n\nconst lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\n]);\n\nconst distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\n]);\n\nconst fixedLitCodeTab = [\n new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\n ]),\n 9,\n];\n\nconst fixedDistCodeTab = [\n new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\n ]),\n 5,\n];\n\nclass FlateStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n\n const cmf = str.getByte();\n const flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\n `Unknown compression method in flate stream: ${cmf}, ${flg}`\n );\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n }\n\n getBits(bits) {\n const str = this.str;\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n\n return b;\n }\n\n getCode(table) {\n const str = this.str;\n const codes = table[0];\n const maxLen = table[1];\n let codeSize = this.codeSize;\n let codeBuf = this.codeBuf;\n\n let b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n const code = codes[codeBuf & ((1 << maxLen) - 1)];\n const codeLen = code >> 16;\n const codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError(\"Bad encoding in flate stream\");\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n }\n\n generateHuffmanTable(lengths) {\n const n = lengths.length;\n\n // find max code length\n let maxLen = 0;\n let i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n // build the table\n const size = 1 << maxLen;\n const codes = new Int32Array(size);\n for (\n let len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1\n ) {\n for (let val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n let code2 = 0;\n let t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n }\n\n readBlock() {\n let buffer, len;\n const str = this.str;\n // read block header\n let hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n\n if (hdr === 0) {\n // uncompressed block\n let b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n let check = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError(\"Bad block header in flate stream\");\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new FormatError(\"Bad uncompressed block length in flate stream\");\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n\n const bufferLength = this.bufferLength,\n end = bufferLength + blockLen;\n buffer = this.ensureBuffer(end);\n this.bufferLength = end;\n\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n const block = str.getBytes(blockLen);\n buffer.set(block, bufferLength);\n if (block.length < blockLen) {\n this.eof = true;\n }\n }\n return;\n }\n\n let litCodeTable;\n let distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) {\n // compressed block, dynamic codes\n const numLitCodes = this.getBits(5) + 257;\n const numDistCodes = this.getBits(5) + 1;\n const numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n let i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n const codes = numLitCodes + numDistCodes;\n const codeLengths = new Uint8Array(codes);\n let bitsLength, bitsOffset, what;\n while (i < codes) {\n const code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n } else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n } else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n let repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(0, numLitCodes)\n );\n distCodeTable = this.generateHuffmanTable(\n codeLengths.subarray(numLitCodes, codes)\n );\n } else {\n throw new FormatError(\"Unknown block type in flate stream\");\n }\n\n buffer = this.buffer;\n let limit = buffer ? buffer.length : 0;\n let pos = this.bufferLength;\n while (true) {\n let code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n let code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n const dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (let k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n }\n}\n\nexport { FlateStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseStream } from \"./base_stream.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { Jbig2Image } from \"./jbig2.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass Jbig2Stream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jbig2Image = new Jbig2Image();\n\n const chunks = [];\n if (this.params instanceof Dict) {\n const globalsStream = this.params.get(\"JBIG2Globals\");\n if (globalsStream instanceof BaseStream) {\n const globals = globalsStream.getBytes();\n chunks.push({ data: globals, start: 0, end: globals.length });\n }\n }\n chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\n const data = jbig2Image.parseChunks(chunks);\n const dataLength = data.length;\n\n // JBIG2 had black as 1 and white as 0, inverting the colors\n for (let i = 0; i < dataLength; i++) {\n data[i] ^= 0xff;\n }\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n }\n}\n\nexport { Jbig2Stream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, shadow } from \"../shared/util.js\";\nimport { log2, readInt8, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\nimport { CCITTFaxDecoder } from \"./ccitt.js\";\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n }\n}\n\n// Utility data structures\nclass ContextCache {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n }\n}\n\nclass DecodingContext {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n get decoder() {\n const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, \"decoder\", decoder);\n }\n\n get contextCache() {\n const cache = new ContextCache();\n return shadow(this, \"contextCache\", cache);\n }\n}\n\nconst MAX_INT_32 = 2 ** 31 - 1;\nconst MIN_INT_32 = -(2 ** 31);\n\n// Annex A. Arithmetic Integer Decoding Procedure\n// A.2 Procedure for decoding values\nfunction decodeInteger(contextCache, procedure, decoder) {\n const contexts = contextCache.getContexts(procedure);\n let prev = 1;\n\n function readBits(length) {\n let v = 0;\n for (let i = 0; i < length; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = prev < 256 ? (prev << 1) | bit : (((prev << 1) | bit) & 511) | 256;\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n const sign = readBits(1);\n // prettier-ignore\n /* eslint-disable no-nested-ternary */\n const value = readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(32) + 4436) :\n readBits(12) + 340) :\n readBits(8) + 84) :\n readBits(6) + 20) :\n readBits(4) + 4) :\n readBits(2);\n /* eslint-enable no-nested-ternary */\n let signedValue;\n if (sign === 0) {\n signedValue = value;\n } else if (value > 0) {\n signedValue = -value;\n }\n // Ensure that the integer value doesn't underflow or overflow.\n if (signedValue >= MIN_INT_32 && signedValue <= MAX_INT_32) {\n return signedValue;\n }\n return null;\n}\n\n// A.3 The IAID decoding procedure\nfunction decodeIAID(contextCache, decoder, codeLength) {\n const contexts = contextCache.getContexts(\"IAID\");\n\n let prev = 1;\n for (let i = 0; i < codeLength; i++) {\n const bit = decoder.readBit(contexts, prev);\n prev = (prev << 1) | bit;\n }\n if (codeLength < 31) {\n return prev & ((1 << codeLength) - 1);\n }\n return prev & 0x7fffffff;\n}\n\n// 7.3 Segment types\nconst SegmentTypes = [\n \"SymbolDictionary\",\n null,\n null,\n null,\n \"IntermediateTextRegion\",\n null,\n \"ImmediateTextRegion\",\n \"ImmediateLosslessTextRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"PatternDictionary\",\n null,\n null,\n null,\n \"IntermediateHalftoneRegion\",\n null,\n \"ImmediateHalftoneRegion\",\n \"ImmediateLosslessHalftoneRegion\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"IntermediateGenericRegion\",\n null,\n \"ImmediateGenericRegion\",\n \"ImmediateLosslessGenericRegion\",\n \"IntermediateGenericRefinementRegion\",\n null,\n \"ImmediateGenericRefinementRegion\",\n \"ImmediateLosslessGenericRefinementRegion\",\n null,\n null,\n null,\n null,\n \"PageInformation\",\n \"EndOfPage\",\n \"EndOfStripe\",\n \"EndOfFile\",\n \"Profiles\",\n \"Tables\",\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n null,\n \"Extension\",\n];\n\nconst CodingTemplates = [\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: 2, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: 2, y: -1 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -1, y: -2 },\n { x: 0, y: -2 },\n { x: 1, y: -2 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n [\n { x: -3, y: -1 },\n { x: -2, y: -1 },\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -4, y: 0 },\n { x: -3, y: 0 },\n { x: -2, y: 0 },\n { x: -1, y: 0 },\n ],\n];\n\nconst RefinementTemplates = [\n {\n coding: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: -1, y: 1 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n {\n coding: [\n { x: -1, y: -1 },\n { x: 0, y: -1 },\n { x: 1, y: -1 },\n { x: -1, y: 0 },\n ],\n reference: [\n { x: 0, y: -1 },\n { x: -1, y: 0 },\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 },\n { x: 1, y: 1 },\n ],\n },\n];\n\n// See 6.2.5.7 Decoding the bitmap.\nconst ReusedContexts = [\n 0x9b25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00e5, // 001 11001 01\n 0x0195, // 011001 0101\n];\n\nconst RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008, // '0000' + '001000'\n];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n const bitmap = [];\n let contextLabel, i, j, pixel, row, row1, row2;\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n const OLD_PIXEL_MASK = 0x7bf7; // 01111 0111111 0111\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = i < 1 ? row : bitmap[i - 1];\n row2 = i < 2 ? row : bitmap[i - 2];\n\n // At the beginning of each row:\n // Fill contextLabel with pixels that are above/right of (X)\n contextLabel =\n (row2[0] << 13) |\n (row2[1] << 12) |\n (row2[2] << 11) |\n (row1[0] << 7) |\n (row1[1] << 6) |\n (row1[2] << 5) |\n (row1[3] << 4);\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n // At each pixel: Clear contextLabel pixels that are shifted\n // out of the context, then add new ones.\n contextLabel =\n ((contextLabel & OLD_PIXEL_MASK) << 1) |\n (j + 3 < width ? row2[j + 3] << 11 : 0) |\n (j + 4 < width ? row1[j + 4] << 4 : 0) |\n pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.2 Generic Region Decoding Procedure\nfunction decodeBitmap(\n mmr,\n width,\n height,\n templateIndex,\n prediction,\n skip,\n at,\n decodingContext\n) {\n if (mmr) {\n const input = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n return decodeMMRBitmap(input, width, height, false);\n }\n\n // Use optimized version for the most common case\n if (\n templateIndex === 0 &&\n !skip &&\n !prediction &&\n at.length === 4 &&\n at[0].x === 3 &&\n at[0].y === -1 &&\n at[1].x === -3 &&\n at[1].y === -1 &&\n at[2].x === 2 &&\n at[2].y === -2 &&\n at[3].x === -2 &&\n at[3].y === -2\n ) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n const useskip = !!skip;\n const template = CodingTemplates[templateIndex].concat(at);\n\n // Sorting is non-standard, and it is not required. But sorting increases\n // the number of template bits that can be reused from the previous\n // contextLabel in the main loop.\n template.sort(function (a, b) {\n return a.y - b.y || a.x - b.x;\n });\n\n const templateLength = template.length;\n const templateX = new Int8Array(templateLength);\n const templateY = new Int8Array(templateLength);\n const changingTemplateEntries = [];\n let reuseMask = 0,\n minX = 0,\n maxX = 0,\n minY = 0;\n let c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n // Check if the template pixel appears in two consecutive context labels,\n // so it can be reused. Otherwise, we add it to the list of changing\n // template entries.\n if (\n k < templateLength - 1 &&\n template[k].y === template[k + 1].y &&\n template[k].x === template[k + 1].x - 1\n ) {\n reuseMask |= 1 << (templateLength - 1 - k);\n } else {\n changingTemplateEntries.push(k);\n }\n }\n const changingEntriesLength = changingTemplateEntries.length;\n\n const changingTemplateX = new Int8Array(changingEntriesLength);\n const changingTemplateY = new Int8Array(changingEntriesLength);\n const changingTemplateBit = new Uint16Array(changingEntriesLength);\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n }\n\n // Get the safe bounding box edges from the width, height, minX, maxX, minY\n const sbb_left = -minX;\n const sbb_top = -minY;\n const sbb_right = width - maxX;\n\n const pseudoPixelContext = ReusedContexts[templateIndex];\n let row = new Uint8Array(width);\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GB\");\n\n let ltp = 0,\n j,\n i0,\n j0,\n contextLabel = 0,\n bit,\n shift;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n bitmap.push(row); // duplicate previous row\n continue;\n }\n }\n row = new Uint8Array(row);\n bitmap.push(row);\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n // Are we in the middle of a scanline, so we can reuse contextLabel\n // bits?\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n // If yes, we can just shift the bits that are reusable and only\n // fetch the remaining ones.\n contextLabel = (contextLabel << 1) & reuseMask;\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n // compute the contextLabel from scratch\n contextLabel = 0;\n shift = templateLength - 1;\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n return bitmap;\n}\n\n// 6.3.2 Generic Refinement Region Decoding Procedure\nfunction decodeRefinement(\n width,\n height,\n templateIndex,\n referenceBitmap,\n offsetX,\n offsetY,\n prediction,\n at,\n decodingContext\n) {\n let codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n const codingTemplateLength = codingTemplate.length;\n const codingTemplateX = new Int32Array(codingTemplateLength);\n const codingTemplateY = new Int32Array(codingTemplateLength);\n let k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n let referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n const referenceTemplateLength = referenceTemplate.length;\n const referenceTemplateX = new Int32Array(referenceTemplateLength);\n const referenceTemplateY = new Int32Array(referenceTemplateLength);\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n const referenceWidth = referenceBitmap[0].length;\n const referenceHeight = referenceBitmap.length;\n\n const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n const bitmap = [];\n\n const decoder = decodingContext.decoder;\n const contexts = decodingContext.contextCache.getContexts(\"GR\");\n\n let ltp = 0;\n for (let i = 0; i < height; i++) {\n if (prediction) {\n const sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error(\"prediction is not supported\");\n }\n }\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let j = 0; j < width; j++) {\n let i0, j0;\n let contextLabel = 0;\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n }\n }\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n const pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n}\n\n// 6.5.5 Decoding the symbol dictionary\nfunction decodeSymbolDictionary(\n huffman,\n refinement,\n symbols,\n numberOfNewSymbols,\n numberOfExportedSymbols,\n huffmanTables,\n templateIndex,\n at,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n }\n\n const newSymbols = [];\n let currentHeight = 0;\n let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n let tableB1, symbolWidths;\n if (huffman) {\n tableB1 = getStandardTable(1); // standard table B.1\n symbolWidths = [];\n symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n }\n\n while (newSymbols.length < numberOfNewSymbols) {\n const deltaHeight = huffman\n ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADH\", decoder); // 6.5.6\n currentHeight += deltaHeight;\n let currentWidth = 0,\n totalWidth = 0;\n const firstSymbol = huffman ? symbolWidths.length : 0;\n while (true) {\n const deltaWidth = huffman\n ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADW\", decoder); // 6.5.7\n if (deltaWidth === null) {\n break; // OOB\n }\n currentWidth += deltaWidth;\n totalWidth += currentWidth;\n let bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(\n huffman,\n refinement,\n currentWidth,\n currentHeight,\n 0,\n numberOfInstances,\n 1, // strip size\n symbols.concat(newSymbols),\n symbolCodeLength,\n 0, // transposed\n 0, // ds offset\n 1, // top left 7.4.3.1.1\n 0, // OR operator\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n 0,\n huffmanInput\n );\n } else {\n const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n const symbol =\n symbolId < symbols.length\n ? symbols[symbolId]\n : newSymbols[symbolId - symbols.length];\n bitmap = decodeRefinement(\n currentWidth,\n currentHeight,\n refinementTemplateIndex,\n symbol,\n rdx,\n rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n newSymbols.push(bitmap);\n } else if (huffman) {\n // Store only symbol width and decode a collective bitmap when the\n // height class is done.\n symbolWidths.push(currentWidth);\n } else {\n // 6.5.8.1 Direct-coded symbol bitmap\n bitmap = decodeBitmap(\n false,\n currentWidth,\n currentHeight,\n templateIndex,\n false,\n null,\n at,\n decodingContext\n );\n newSymbols.push(bitmap);\n }\n }\n if (huffman && !refinement) {\n // 6.5.9 Height class collective bitmap\n const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n huffmanInput.byteAlign();\n let collectiveBitmap;\n if (bitmapSize === 0) {\n // Uncompressed collective bitmap\n collectiveBitmap = readUncompressedBitmap(\n huffmanInput,\n totalWidth,\n currentHeight\n );\n } else {\n // MMR collective bitmap\n const originalEnd = huffmanInput.end;\n const bitmapEnd = huffmanInput.position + bitmapSize;\n huffmanInput.end = bitmapEnd;\n collectiveBitmap = decodeMMRBitmap(\n huffmanInput,\n totalWidth,\n currentHeight,\n false\n );\n huffmanInput.end = originalEnd;\n huffmanInput.position = bitmapEnd;\n }\n const numberOfSymbolsDecoded = symbolWidths.length;\n if (firstSymbol === numberOfSymbolsDecoded - 1) {\n // collectiveBitmap is a single symbol.\n newSymbols.push(collectiveBitmap);\n } else {\n // Divide collectiveBitmap into symbols.\n let i,\n y,\n xMin = 0,\n xMax,\n bitmapWidth,\n symbolBitmap;\n for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n bitmapWidth = symbolWidths[i];\n xMax = xMin + bitmapWidth;\n symbolBitmap = [];\n for (y = 0; y < currentHeight; y++) {\n symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n newSymbols.push(symbolBitmap);\n xMin = xMax;\n }\n }\n }\n }\n\n // 6.5.10 Exported symbols\n const exportedSymbols = [],\n flags = [];\n let currentFlag = false,\n i,\n ii;\n const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n let runLength = huffman\n ? tableB1.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAEX\", decoder);\n while (runLength--) {\n flags.push(currentFlag);\n }\n currentFlag = !currentFlag;\n }\n for (i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n}\n\nfunction decodeTextRegion(\n huffman,\n refinement,\n width,\n height,\n defaultPixelValue,\n numberOfSymbolInstances,\n stripSize,\n inputSymbols,\n symbolCodeLength,\n transposed,\n dsOffset,\n referenceCorner,\n combinationOperator,\n huffmanTables,\n refinementTemplateIndex,\n refinementAt,\n decodingContext,\n logStripSize,\n huffmanInput\n) {\n if (huffman && refinement) {\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n // Prepare bitmap\n const bitmap = [];\n let i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (let j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n const decoder = decodingContext.decoder;\n const contextCache = decodingContext.contextCache;\n\n let stripT = huffman\n ? -huffmanTables.tableDeltaT.decode(huffmanInput)\n : -decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n let firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n const deltaT = huffman\n ? huffmanTables.tableDeltaT.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADT\", decoder); // 6.4.6\n stripT += deltaT;\n\n const deltaFirstS = huffman\n ? huffmanTables.tableFirstS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IAFS\", decoder); // 6.4.7\n firstS += deltaFirstS;\n let currentS = firstS;\n do {\n let currentT = 0; // 6.4.9\n if (stripSize > 1) {\n currentT = huffman\n ? huffmanInput.readBits(logStripSize)\n : decodeInteger(contextCache, \"IAIT\", decoder);\n }\n const t = stripSize * stripT + currentT;\n const symbolId = huffman\n ? huffmanTables.symbolIDTable.decode(huffmanInput)\n : decodeIAID(contextCache, decoder, symbolCodeLength);\n const applyRefinement =\n refinement &&\n (huffman\n ? huffmanInput.readBit()\n : decodeInteger(contextCache, \"IARI\", decoder));\n let symbolBitmap = inputSymbols[symbolId];\n let symbolWidth = symbolBitmap[0].length;\n let symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n const rdw = decodeInteger(contextCache, \"IARDW\", decoder); // 6.4.11.1\n const rdh = decodeInteger(contextCache, \"IARDH\", decoder); // 6.4.11.2\n const rdx = decodeInteger(contextCache, \"IARDX\", decoder); // 6.4.11.3\n const rdy = decodeInteger(contextCache, \"IARDY\", decoder); // 6.4.11.4\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(\n symbolWidth,\n symbolHeight,\n refinementTemplateIndex,\n symbolBitmap,\n (rdw >> 1) + rdx,\n (rdh >> 1) + rdy,\n false,\n refinementAt,\n decodingContext\n );\n }\n const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n let s2, t2, symbolRow;\n if (transposed) {\n // Place Symbol Bitmap from T1,S1\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n // To ignore Parts of Symbol bitmap which goes\n // outside bitmap region\n const maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0: // OR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2: // XOR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[t2];\n switch (combinationOperator) {\n case 0: // OR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2: // XOR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n currentS += symbolWidth - 1;\n }\n i++;\n const deltaS = huffman\n ? huffmanTables.tableDeltaS.decode(huffmanInput)\n : decodeInteger(contextCache, \"IADS\", decoder); // 6.4.8\n if (deltaS === null) {\n break; // OOB\n }\n currentS += deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n}\n\nfunction decodePatternDictionary(\n mmr,\n patternWidth,\n patternHeight,\n maxPatternIndex,\n template,\n decodingContext\n) {\n const at = [];\n if (!mmr) {\n at.push({\n x: -patternWidth,\n y: 0,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n const collectiveBitmap = decodeBitmap(\n mmr,\n collectiveWidth,\n patternHeight,\n template,\n false,\n null,\n at,\n decodingContext\n );\n // Divide collective bitmap into patterns.\n const patterns = [];\n for (let i = 0; i <= maxPatternIndex; i++) {\n const patternBitmap = [];\n const xMin = patternWidth * i;\n const xMax = xMin + patternWidth;\n for (let y = 0; y < patternHeight; y++) {\n patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n }\n patterns.push(patternBitmap);\n }\n return patterns;\n}\n\nfunction decodeHalftoneRegion(\n mmr,\n patterns,\n template,\n regionWidth,\n regionHeight,\n defaultPixelValue,\n enableSkip,\n combinationOperator,\n gridWidth,\n gridHeight,\n gridOffsetX,\n gridOffsetY,\n gridVectorX,\n gridVectorY,\n decodingContext\n) {\n const skip = null;\n if (enableSkip) {\n throw new Jbig2Error(\"skip is not supported\");\n }\n if (combinationOperator !== 0) {\n throw new Jbig2Error(\n `operator \"${combinationOperator}\" is not supported in halftone region`\n );\n }\n\n // Prepare bitmap.\n const regionBitmap = [];\n let i, j, row;\n for (i = 0; i < regionHeight; i++) {\n row = new Uint8Array(regionWidth);\n if (defaultPixelValue) {\n for (j = 0; j < regionWidth; j++) {\n row[j] = defaultPixelValue;\n }\n }\n regionBitmap.push(row);\n }\n\n const numberOfPatterns = patterns.length;\n const pattern0 = patterns[0];\n const patternWidth = pattern0[0].length,\n patternHeight = pattern0.length;\n const bitsPerValue = log2(numberOfPatterns);\n const at = [];\n if (!mmr) {\n at.push({\n x: template <= 1 ? 3 : 2,\n y: -1,\n });\n if (template === 0) {\n at.push(\n {\n x: -3,\n y: -1,\n },\n {\n x: 2,\n y: -2,\n },\n {\n x: -2,\n y: -2,\n }\n );\n }\n }\n // Annex C. Gray-scale Image Decoding Procedure.\n const grayScaleBitPlanes = [];\n let mmrInput, bitmap;\n if (mmr) {\n // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n // the end of each bitmap, so EOFBs must be decoded.\n mmrInput = new Reader(\n decodingContext.data,\n decodingContext.start,\n decodingContext.end\n );\n }\n for (i = bitsPerValue - 1; i >= 0; i--) {\n if (mmr) {\n bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n } else {\n bitmap = decodeBitmap(\n false,\n gridWidth,\n gridHeight,\n template,\n false,\n skip,\n at,\n decodingContext\n );\n }\n grayScaleBitPlanes[i] = bitmap;\n }\n // 6.6.5.2 Rendering the patterns.\n let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n for (mg = 0; mg < gridHeight; mg++) {\n for (ng = 0; ng < gridWidth; ng++) {\n bit = 0;\n patternIndex = 0;\n for (j = bitsPerValue - 1; j >= 0; j--) {\n bit ^= grayScaleBitPlanes[j][mg][ng]; // Gray decoding\n patternIndex |= bit << j;\n }\n patternBitmap = patterns[patternIndex];\n x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n // Draw patternBitmap at (x, y).\n if (\n x >= 0 &&\n x + patternWidth <= regionWidth &&\n y >= 0 &&\n y + patternHeight <= regionHeight\n ) {\n for (i = 0; i < patternHeight; i++) {\n regionRow = regionBitmap[y + i];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionRow[x + j] |= patternRow[j];\n }\n }\n } else {\n let regionX, regionY;\n for (i = 0; i < patternHeight; i++) {\n regionY = y + i;\n if (regionY < 0 || regionY >= regionHeight) {\n continue;\n }\n regionRow = regionBitmap[regionY];\n patternRow = patternBitmap[i];\n for (j = 0; j < patternWidth; j++) {\n regionX = x + j;\n if (regionX >= 0 && regionX < regionWidth) {\n regionRow[regionX] |= patternRow[j];\n }\n }\n }\n }\n }\n }\n return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n const segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n const flags = data[start + 4];\n const segmentType = flags & 0x3f;\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n }\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n const pageAssociationFieldSize = !!(flags & 0x40);\n const referredFlags = data[start + 5];\n let referredToCount = (referredFlags >> 5) & 7;\n const retainBits = [referredFlags & 31];\n let position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1fffffff;\n position += 3;\n let bytes = (referredToCount + 7) >> 3;\n retainBits[0] = data[position++];\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error(\"invalid referred-to flags\");\n }\n\n segmentHeader.retainBits = retainBits;\n\n let referredToSegmentNumberSize = 4;\n if (segmentHeader.number <= 256) {\n referredToSegmentNumberSize = 1;\n } else if (segmentHeader.number <= 65536) {\n referredToSegmentNumberSize = 2;\n }\n const referredTo = [];\n let i, ii;\n for (i = 0; i < referredToCount; i++) {\n let number;\n if (referredToSegmentNumberSize === 1) {\n number = data[position];\n } else if (referredToSegmentNumberSize === 2) {\n number = readUint16(data, position);\n } else {\n number = readUint32(data, position);\n }\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n segmentHeader.referredTo = referredTo;\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = readUint32(data, position);\n position += 4;\n }\n segmentHeader.length = readUint32(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xffffffff) {\n // 7.2.7 Segment data length, unknown segment length\n if (segmentType === 38) {\n // ImmediateGenericRegion\n const genericRegionInfo = readRegionSegmentInformation(data, position);\n const genericRegionSegmentFlags =\n data[position + RegionSegmentInformationFieldLength];\n const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n const searchPatternLength = 6;\n const searchPattern = new Uint8Array(searchPatternLength);\n if (!genericRegionMmr) {\n searchPattern[0] = 0xff;\n searchPattern[1] = 0xac;\n }\n searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\n searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\n searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\n searchPattern[5] = genericRegionInfo.height & 0xff;\n for (i = position, ii = data.length; i < ii; i++) {\n let j = 0;\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n if (segmentHeader.length === 0xffffffff) {\n throw new Jbig2Error(\"segment end was not found\");\n }\n } else {\n throw new Jbig2Error(\"invalid unknown segment length\");\n }\n }\n segmentHeader.headerEnd = position;\n return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n const segments = [];\n let position = start;\n while (position < end) {\n const segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n const segment = {\n header: segmentHeader,\n data,\n };\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n segments.push(segment);\n if (segmentHeader.type === 51) {\n break; // end of file is found\n }\n }\n if (header.randomAccess) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n return segments;\n}\n\n// 7.4.1 Region segment information field\nfunction readRegionSegmentInformation(data, start) {\n return {\n width: readUint32(data, start),\n height: readUint32(data, start + 4),\n x: readUint32(data, start + 8),\n y: readUint32(data, start + 12),\n combinationOperator: data[start + 16] & 7,\n };\n}\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n const header = segment.header;\n\n const data = segment.data,\n end = segment.end;\n let position = segment.start;\n let args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n const dictionary = {};\n const dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = (dictionaryFlags >> 10) & 3;\n dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n position += 2;\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.at = at;\n }\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.refinementAt = at;\n }\n dictionary.numberOfExportedSymbols = readUint32(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = readUint32(data, position);\n position += 4;\n args = [\n dictionary,\n header.number,\n header.referredTo,\n data,\n position,\n end,\n ];\n break;\n case 6: // ImmediateTextRegion\n case 7: // ImmediateLosslessTextRegion\n const textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const textRegionSegmentFlags = readUint16(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n textRegion.stripSize = 1 << textRegion.logStripSize;\n textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n if (textRegion.huffman) {\n const textRegionHuffmanFlags = readUint16(data, position);\n position += 2;\n textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n textRegion.huffmanRefinementSizeSelector = !!(\n textRegionHuffmanFlags & 0x4000\n );\n }\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n textRegion.refinementAt = at;\n }\n textRegion.numberOfSymbolInstances = readUint32(data, position);\n position += 4;\n args = [textRegion, header.referredTo, data, position, end];\n break;\n case 16: // PatternDictionary\n // 7.4.4. Pattern dictionary segment syntax\n const patternDictionary = {};\n const patternDictionaryFlags = data[position++];\n patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n patternDictionary.patternWidth = data[position++];\n patternDictionary.patternHeight = data[position++];\n patternDictionary.maxPatternIndex = readUint32(data, position);\n position += 4;\n args = [patternDictionary, header.number, data, position, end];\n break;\n case 22: // ImmediateHalftoneRegion\n case 23: // ImmediateLosslessHalftoneRegion\n // 7.4.5 Halftone region segment syntax\n const halftoneRegion = {};\n halftoneRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const halftoneRegionFlags = data[position++];\n halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n halftoneRegion.gridWidth = readUint32(data, position);\n position += 4;\n halftoneRegion.gridHeight = readUint32(data, position);\n position += 4;\n halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\n position += 4;\n halftoneRegion.gridVectorX = readUint16(data, position);\n position += 2;\n halftoneRegion.gridVectorY = readUint16(data, position);\n position += 2;\n args = [halftoneRegion, header.referredTo, data, position, end];\n break;\n case 38: // ImmediateGenericRegion\n case 39: // ImmediateLosslessGenericRegion\n const genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n const genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n genericRegion.at = at;\n }\n args = [genericRegion, data, position, end];\n break;\n case 48: // PageInformation\n const pageInfo = {\n width: readUint32(data, position),\n height: readUint32(data, position + 4),\n resolutionX: readUint32(data, position + 8),\n resolutionY: readUint32(data, position + 12),\n };\n if (pageInfo.height === 0xffffffff) {\n delete pageInfo.height;\n }\n const pageSegmentFlags = data[position + 16];\n readUint16(data, position + 17); // pageStripingInformation\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n case 49: // EndOfPage\n break;\n case 50: // EndOfStripe\n break;\n case 51: // EndOfFile\n break;\n case 53: // Tables\n args = [header.number, data, position, end];\n break;\n case 62: // 7.4.15 defines 2 extension types which\n // are comments and can be ignored.\n break;\n default:\n throw new Jbig2Error(\n `segment type ${header.typeName}(${header.type}) is not implemented`\n );\n }\n const callbackName = \"on\" + header.typeName;\n if (callbackName in visitor) {\n // eslint-disable-next-line prefer-spread\n visitor[callbackName].apply(visitor, args);\n }\n}\n\nfunction processSegments(segments, visitor) {\n for (let i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n}\n\nfunction parseJbig2Chunks(chunks) {\n const visitor = new SimpleSegmentVisitor();\n for (let i = 0, ii = chunks.length; i < ii; i++) {\n const chunk = chunks[i];\n const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"IMAGE_DECODERS\")) {\n throw new Error(\"Not implemented: parseJbig2\");\n }\n const end = data.length;\n let position = 0;\n\n if (\n data[position] !== 0x97 ||\n data[position + 1] !== 0x4a ||\n data[position + 2] !== 0x42 ||\n data[position + 3] !== 0x32 ||\n data[position + 4] !== 0x0d ||\n data[position + 5] !== 0x0a ||\n data[position + 6] !== 0x1a ||\n data[position + 7] !== 0x0a\n ) {\n throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n }\n\n const header = Object.create(null);\n position += 8;\n const flags = data[position++];\n header.randomAccess = !(flags & 1);\n if (!(flags & 2)) {\n header.numberOfPages = readUint32(data, position);\n position += 4;\n }\n\n const segments = readSegments(header, data, position, end);\n const visitor = new SimpleSegmentVisitor();\n processSegments(segments, visitor);\n\n const { width, height } = visitor.currentPageInfo;\n const bitPacked = visitor.buffer;\n const imgData = new Uint8ClampedArray(width * height);\n let q = 0,\n k = 0;\n for (let i = 0; i < height; i++) {\n let mask = 0,\n buffer;\n for (let j = 0; j < width; j++) {\n if (!mask) {\n mask = 128;\n buffer = bitPacked[k++];\n }\n imgData[q++] = buffer & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n return { imgData, width, height };\n}\n\nclass SimpleSegmentVisitor {\n onPageInformation(info) {\n this.currentPageInfo = info;\n const rowSize = (info.width + 7) >> 3;\n const buffer = new Uint8ClampedArray(rowSize * info.height);\n // The contents of ArrayBuffers are initialized to 0.\n // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n if (info.defaultPixelValue) {\n buffer.fill(0xff);\n }\n this.buffer = buffer;\n }\n\n drawBitmap(regionInfo, bitmap) {\n const pageInfo = this.currentPageInfo;\n const width = regionInfo.width,\n height = regionInfo.height;\n const rowSize = (pageInfo.width + 7) >> 3;\n const combinationOperator = pageInfo.combinationOperatorOverride\n ? regionInfo.combinationOperator\n : pageInfo.combinationOperator;\n const buffer = this.buffer;\n const mask0 = 128 >> (regionInfo.x & 7);\n let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n let i, j, mask, offset;\n switch (combinationOperator) {\n case 0: // OR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n case 2: // XOR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`\n );\n }\n }\n\n onImmediateGenericRegion(region, data, start, end) {\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeBitmap(\n region.mmr,\n regionInfo.width,\n regionInfo.height,\n region.template,\n region.prediction,\n null,\n region.at,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion(...arguments);\n }\n\n onSymbolDictionary(\n dictionary,\n currentSegment,\n referredSegments,\n data,\n start,\n end\n ) {\n let huffmanTables, huffmanInput;\n if (dictionary.huffman) {\n huffmanTables = getSymbolDictionaryHuffmanTables(\n dictionary,\n referredSegments,\n this.customTables\n );\n huffmanInput = new Reader(data, start, end);\n }\n\n // Combines exported symbols from all referred segments\n let symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n const inputSymbols = [];\n for (const referredSegment of referredSegments) {\n const referredSymbols = symbols[referredSegment];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols.push(...referredSymbols);\n }\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(\n dictionary.huffman,\n dictionary.refinement,\n inputSymbols,\n dictionary.numberOfNewSymbols,\n dictionary.numberOfExportedSymbols,\n huffmanTables,\n dictionary.template,\n dictionary.at,\n dictionary.refinementTemplate,\n dictionary.refinementAt,\n decodingContext,\n huffmanInput\n );\n }\n\n onImmediateTextRegion(region, referredSegments, data, start, end) {\n const regionInfo = region.info;\n let huffmanTables, huffmanInput;\n\n // Combines exported symbols from all referred segments\n const symbols = this.symbols;\n const inputSymbols = [];\n for (const referredSegment of referredSegments) {\n const referredSymbols = symbols[referredSegment];\n // referredSymbols is undefined when we have a reference to a Tables\n // segment instead of a SymbolDictionary.\n if (referredSymbols) {\n inputSymbols.push(...referredSymbols);\n }\n }\n const symbolCodeLength = log2(inputSymbols.length);\n if (region.huffman) {\n huffmanInput = new Reader(data, start, end);\n huffmanTables = getTextRegionHuffmanTables(\n region,\n referredSegments,\n this.customTables,\n inputSymbols.length,\n huffmanInput\n );\n }\n\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeTextRegion(\n region.huffman,\n region.refinement,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.numberOfSymbolInstances,\n region.stripSize,\n inputSymbols,\n symbolCodeLength,\n region.transposed,\n region.dsOffset,\n region.referenceCorner,\n region.combinationOperator,\n huffmanTables,\n region.refinementTemplate,\n region.refinementAt,\n decodingContext,\n region.logStripSize,\n huffmanInput\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion(...arguments);\n }\n\n onPatternDictionary(dictionary, currentSegment, data, start, end) {\n let patterns = this.patterns;\n if (!patterns) {\n this.patterns = patterns = {};\n }\n const decodingContext = new DecodingContext(data, start, end);\n patterns[currentSegment] = decodePatternDictionary(\n dictionary.mmr,\n dictionary.patternWidth,\n dictionary.patternHeight,\n dictionary.maxPatternIndex,\n dictionary.template,\n decodingContext\n );\n }\n\n onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n // HalftoneRegion refers to exactly one PatternDictionary.\n const patterns = this.patterns[referredSegments[0]];\n const regionInfo = region.info;\n const decodingContext = new DecodingContext(data, start, end);\n const bitmap = decodeHalftoneRegion(\n region.mmr,\n patterns,\n region.template,\n regionInfo.width,\n regionInfo.height,\n region.defaultPixelValue,\n region.enableSkip,\n region.combinationOperator,\n region.gridWidth,\n region.gridHeight,\n region.gridOffsetX,\n region.gridOffsetY,\n region.gridVectorX,\n region.gridVectorY,\n decodingContext\n );\n this.drawBitmap(regionInfo, bitmap);\n }\n\n onImmediateLosslessHalftoneRegion() {\n this.onImmediateHalftoneRegion(...arguments);\n }\n\n onTables(currentSegment, data, start, end) {\n let customTables = this.customTables;\n if (!customTables) {\n this.customTables = customTables = {};\n }\n customTables[currentSegment] = decodeTablesSegment(data, start, end);\n }\n}\n\nclass HuffmanLine {\n constructor(lineData) {\n if (lineData.length === 2) {\n // OOB line.\n this.isOOB = true;\n this.rangeLow = 0;\n this.prefixLength = lineData[0];\n this.rangeLength = 0;\n this.prefixCode = lineData[1];\n this.isLowerRange = false;\n } else {\n // Normal, upper range or lower range line.\n // Upper range lines are processed like normal lines.\n this.isOOB = false;\n this.rangeLow = lineData[0];\n this.prefixLength = lineData[1];\n this.rangeLength = lineData[2];\n this.prefixCode = lineData[3];\n this.isLowerRange = lineData[4] === \"lower\";\n }\n }\n}\n\nclass HuffmanTreeNode {\n constructor(line) {\n this.children = [];\n if (line) {\n // Leaf node\n this.isLeaf = true;\n this.rangeLength = line.rangeLength;\n this.rangeLow = line.rangeLow;\n this.isLowerRange = line.isLowerRange;\n this.isOOB = line.isOOB;\n } else {\n // Intermediate or root node\n this.isLeaf = false;\n }\n }\n\n buildTree(line, shift) {\n const bit = (line.prefixCode >> shift) & 1;\n if (shift <= 0) {\n // Create a leaf node.\n this.children[bit] = new HuffmanTreeNode(line);\n } else {\n // Create an intermediate node and continue recursively.\n let node = this.children[bit];\n if (!node) {\n this.children[bit] = node = new HuffmanTreeNode(null);\n }\n node.buildTree(line, shift - 1);\n }\n }\n\n decodeNode(reader) {\n if (this.isLeaf) {\n if (this.isOOB) {\n return null;\n }\n const htOffset = reader.readBits(this.rangeLength);\n return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n }\n const node = this.children[reader.readBit()];\n if (!node) {\n throw new Jbig2Error(\"invalid Huffman data\");\n }\n return node.decodeNode(reader);\n }\n}\n\nclass HuffmanTable {\n constructor(lines, prefixCodesDone) {\n if (!prefixCodesDone) {\n this.assignPrefixCodes(lines);\n }\n // Create Huffman tree.\n this.rootNode = new HuffmanTreeNode(null);\n for (let i = 0, ii = lines.length; i < ii; i++) {\n const line = lines[i];\n if (line.prefixLength > 0) {\n this.rootNode.buildTree(line, line.prefixLength - 1);\n }\n }\n }\n\n decode(reader) {\n return this.rootNode.decodeNode(reader);\n }\n\n assignPrefixCodes(lines) {\n // Annex B.3 Assigning the prefix codes.\n const linesLength = lines.length;\n let prefixLengthMax = 0;\n for (let i = 0; i < linesLength; i++) {\n prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n }\n\n const histogram = new Uint32Array(prefixLengthMax + 1);\n for (let i = 0; i < linesLength; i++) {\n histogram[lines[i].prefixLength]++;\n }\n let currentLength = 1,\n firstCode = 0,\n currentCode,\n currentTemp,\n line;\n histogram[0] = 0;\n\n while (currentLength <= prefixLengthMax) {\n firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n currentCode = firstCode;\n currentTemp = 0;\n while (currentTemp < linesLength) {\n line = lines[currentTemp];\n if (line.prefixLength === currentLength) {\n line.prefixCode = currentCode;\n currentCode++;\n }\n currentTemp++;\n }\n currentLength++;\n }\n }\n}\n\nfunction decodeTablesSegment(data, start, end) {\n // Decodes a Tables segment, i.e., a custom Huffman table.\n // Annex B.2 Code table structure.\n const flags = data[start];\n const lowestValue = readUint32(data, start + 1) & 0xffffffff;\n const highestValue = readUint32(data, start + 5) & 0xffffffff;\n const reader = new Reader(data, start + 9, end);\n\n const prefixSizeBits = ((flags >> 1) & 7) + 1;\n const rangeSizeBits = ((flags >> 4) & 7) + 1;\n const lines = [];\n let prefixLength,\n rangeLength,\n currentRangeLow = lowestValue;\n\n // Normal table lines\n do {\n prefixLength = reader.readBits(prefixSizeBits);\n rangeLength = reader.readBits(rangeSizeBits);\n lines.push(\n new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\n );\n currentRangeLow += 1 << rangeLength;\n } while (currentRangeLow < highestValue);\n\n // Lower range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n\n // Upper range table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n if (flags & 1) {\n // Out-of-band table line\n prefixLength = reader.readBits(prefixSizeBits);\n lines.push(new HuffmanLine([prefixLength, 0]));\n }\n\n return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n // Annex B.5 Standard Huffman tables.\n let table = standardTablesCache[number];\n if (table) {\n return table;\n }\n let lines;\n switch (number) {\n case 1:\n lines = [\n [0, 1, 4, 0x0],\n [16, 2, 8, 0x2],\n [272, 3, 16, 0x6],\n [65808, 3, 32, 0x7], // upper\n ];\n break;\n case 2:\n lines = [\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [75, 6, 32, 0x3e], // upper\n [6, 0x3f], // OOB\n ];\n break;\n case 3:\n lines = [\n [-256, 8, 8, 0xfe],\n [0, 1, 0, 0x0],\n [1, 2, 0, 0x2],\n [2, 3, 0, 0x6],\n [3, 4, 3, 0xe],\n [11, 5, 6, 0x1e],\n [-257, 8, 32, 0xff, \"lower\"],\n [75, 7, 32, 0x7e], // upper\n [6, 0x3e], // OOB\n ];\n break;\n case 4:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [76, 5, 32, 0x1f], // upper\n ];\n break;\n case 5:\n lines = [\n [-255, 7, 8, 0x7e],\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 0, 0x6],\n [4, 4, 3, 0xe],\n [12, 5, 6, 0x1e],\n [-256, 7, 32, 0x7f, \"lower\"],\n [76, 6, 32, 0x3e], // upper\n ];\n break;\n case 6:\n lines = [\n [-2048, 5, 10, 0x1c],\n [-1024, 4, 9, 0x8],\n [-512, 4, 8, 0x9],\n [-256, 4, 7, 0xa],\n [-128, 5, 6, 0x1d],\n [-64, 5, 5, 0x1e],\n [-32, 4, 5, 0xb],\n [0, 2, 7, 0x0],\n [128, 3, 7, 0x2],\n [256, 3, 8, 0x3],\n [512, 4, 9, 0xc],\n [1024, 4, 10, 0xd],\n [-2049, 6, 32, 0x3e, \"lower\"],\n [2048, 6, 32, 0x3f], // upper\n ];\n break;\n case 7:\n lines = [\n [-1024, 4, 9, 0x8],\n [-512, 3, 8, 0x0],\n [-256, 4, 7, 0x9],\n [-128, 5, 6, 0x1a],\n [-64, 5, 5, 0x1b],\n [-32, 4, 5, 0xa],\n [0, 4, 5, 0xb],\n [32, 5, 5, 0x1c],\n [64, 5, 6, 0x1d],\n [128, 4, 7, 0xc],\n [256, 3, 8, 0x1],\n [512, 3, 9, 0x2],\n [1024, 3, 10, 0x3],\n [-1025, 5, 32, 0x1e, \"lower\"],\n [2048, 5, 32, 0x1f], // upper\n ];\n break;\n case 8:\n lines = [\n [-15, 8, 3, 0xfc],\n [-7, 9, 1, 0x1fc],\n [-5, 8, 1, 0xfd],\n [-3, 9, 0, 0x1fd],\n [-2, 7, 0, 0x7c],\n [-1, 4, 0, 0xa],\n [0, 2, 1, 0x0],\n [2, 5, 0, 0x1a],\n [3, 6, 0, 0x3a],\n [4, 3, 4, 0x4],\n [20, 6, 1, 0x3b],\n [22, 4, 4, 0xb],\n [38, 4, 5, 0xc],\n [70, 5, 6, 0x1b],\n [134, 5, 7, 0x1c],\n [262, 6, 7, 0x3c],\n [390, 7, 8, 0x7d],\n [646, 6, 10, 0x3d],\n [-16, 9, 32, 0x1fe, \"lower\"],\n [1670, 9, 32, 0x1ff], // upper\n [2, 0x1], // OOB\n ];\n break;\n case 9:\n lines = [\n [-31, 8, 4, 0xfc],\n [-15, 9, 2, 0x1fc],\n [-11, 8, 2, 0xfd],\n [-7, 9, 1, 0x1fd],\n [-5, 7, 1, 0x7c],\n [-3, 4, 1, 0xa],\n [-1, 3, 1, 0x2],\n [1, 3, 1, 0x3],\n [3, 5, 1, 0x1a],\n [5, 6, 1, 0x3a],\n [7, 3, 5, 0x4],\n [39, 6, 2, 0x3b],\n [43, 4, 5, 0xb],\n [75, 4, 6, 0xc],\n [139, 5, 7, 0x1b],\n [267, 5, 8, 0x1c],\n [523, 6, 8, 0x3c],\n [779, 7, 9, 0x7d],\n [1291, 6, 11, 0x3d],\n [-32, 9, 32, 0x1fe, \"lower\"],\n [3339, 9, 32, 0x1ff], // upper\n [2, 0x0], // OOB\n ];\n break;\n case 10:\n lines = [\n [-21, 7, 4, 0x7a],\n [-5, 8, 0, 0xfc],\n [-4, 7, 0, 0x7b],\n [-3, 5, 0, 0x18],\n [-2, 2, 2, 0x0],\n [2, 5, 0, 0x19],\n [3, 6, 0, 0x36],\n [4, 7, 0, 0x7c],\n [5, 8, 0, 0xfd],\n [6, 2, 6, 0x1],\n [70, 5, 5, 0x1a],\n [102, 6, 5, 0x37],\n [134, 6, 6, 0x38],\n [198, 6, 7, 0x39],\n [326, 6, 8, 0x3a],\n [582, 6, 9, 0x3b],\n [1094, 6, 10, 0x3c],\n [2118, 7, 11, 0x7d],\n [-22, 8, 32, 0xfe, \"lower\"],\n [4166, 8, 32, 0xff], // upper\n [2, 0x2], // OOB\n ];\n break;\n case 11:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 1, 0x2],\n [4, 4, 0, 0xc],\n [5, 4, 1, 0xd],\n [7, 5, 1, 0x1c],\n [9, 5, 2, 0x1d],\n [13, 6, 2, 0x3c],\n [17, 7, 2, 0x7a],\n [21, 7, 3, 0x7b],\n [29, 7, 4, 0x7c],\n [45, 7, 5, 0x7d],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 12:\n lines = [\n [1, 1, 0, 0x0],\n [2, 2, 0, 0x2],\n [3, 3, 1, 0x6],\n [5, 5, 0, 0x1c],\n [6, 5, 1, 0x1d],\n [8, 6, 1, 0x3c],\n [10, 7, 0, 0x7a],\n [11, 7, 1, 0x7b],\n [13, 7, 2, 0x7c],\n [17, 7, 3, 0x7d],\n [25, 7, 4, 0x7e],\n [41, 8, 5, 0xfe],\n [73, 8, 32, 0xff], // upper\n ];\n break;\n case 13:\n lines = [\n [1, 1, 0, 0x0],\n [2, 3, 0, 0x4],\n [3, 4, 0, 0xc],\n [4, 5, 0, 0x1c],\n [5, 4, 1, 0xd],\n [7, 3, 3, 0x5],\n [15, 6, 1, 0x3a],\n [17, 6, 2, 0x3b],\n [21, 6, 3, 0x3c],\n [29, 6, 4, 0x3d],\n [45, 6, 5, 0x3e],\n [77, 7, 6, 0x7e],\n [141, 7, 32, 0x7f], // upper\n ];\n break;\n case 14:\n lines = [\n [-2, 3, 0, 0x4],\n [-1, 3, 0, 0x5],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x6],\n [2, 3, 0, 0x7],\n ];\n break;\n case 15:\n lines = [\n [-24, 7, 4, 0x7c],\n [-8, 6, 2, 0x3c],\n [-4, 5, 1, 0x1c],\n [-2, 4, 0, 0xc],\n [-1, 3, 0, 0x4],\n [0, 1, 0, 0x0],\n [1, 3, 0, 0x5],\n [2, 4, 0, 0xd],\n [3, 5, 1, 0x1d],\n [5, 6, 2, 0x3d],\n [9, 7, 4, 0x7d],\n [-25, 7, 32, 0x7e, \"lower\"],\n [25, 7, 32, 0x7f], // upper\n ];\n break;\n default:\n throw new Jbig2Error(`standard table B.${number} does not exist`);\n }\n\n for (let i = 0, ii = lines.length; i < ii; i++) {\n lines[i] = new HuffmanLine(lines[i]);\n }\n table = new HuffmanTable(lines, true);\n standardTablesCache[number] = table;\n return table;\n}\n\nclass Reader {\n constructor(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n this.position = start;\n this.shift = -1;\n this.currentByte = 0;\n }\n\n readBit() {\n if (this.shift < 0) {\n if (this.position >= this.end) {\n throw new Jbig2Error(\"end of data while reading bit\");\n }\n this.currentByte = this.data[this.position++];\n this.shift = 7;\n }\n const bit = (this.currentByte >> this.shift) & 1;\n this.shift--;\n return bit;\n }\n\n readBits(numBits) {\n let result = 0,\n i;\n for (i = numBits - 1; i >= 0; i--) {\n result |= this.readBit() << i;\n }\n return result;\n }\n\n byteAlign() {\n this.shift = -1;\n }\n\n next() {\n if (this.position >= this.end) {\n return -1;\n }\n return this.data[this.position++];\n }\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n // Returns a Tables segment that has been earlier decoded.\n // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n let currentIndex = 0;\n for (let i = 0, ii = referredTo.length; i < ii; i++) {\n const table = customTables[referredTo[i]];\n if (table) {\n if (index === currentIndex) {\n return table;\n }\n currentIndex++;\n }\n }\n throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(\n textRegion,\n referredTo,\n customTables,\n numberOfSymbols,\n reader\n) {\n // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n // Read code lengths for RUNCODEs 0...34.\n const codes = [];\n for (let i = 0; i <= 34; i++) {\n const codeLength = reader.readBits(4);\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n }\n // Assign Huffman codes for RUNCODEs.\n const runCodesTable = new HuffmanTable(codes, false);\n\n // Read a Huffman code using the assignment above.\n // Interpret the RUNCODE codes and the additional bits (if any).\n codes.length = 0;\n for (let i = 0; i < numberOfSymbols; ) {\n const codeLength = runCodesTable.decode(reader);\n if (codeLength >= 32) {\n let repeatedLength, numberOfRepeats, j;\n switch (codeLength) {\n case 32:\n if (i === 0) {\n throw new Jbig2Error(\"no previous value in symbol ID table\");\n }\n numberOfRepeats = reader.readBits(2) + 3;\n repeatedLength = codes[i - 1].prefixLength;\n break;\n case 33:\n numberOfRepeats = reader.readBits(3) + 3;\n repeatedLength = 0;\n break;\n case 34:\n numberOfRepeats = reader.readBits(7) + 11;\n repeatedLength = 0;\n break;\n default:\n throw new Jbig2Error(\"invalid code length in symbol ID table\");\n }\n for (j = 0; j < numberOfRepeats; j++) {\n codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n i++;\n }\n } else {\n codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n i++;\n }\n }\n reader.byteAlign();\n const symbolIDTable = new HuffmanTable(codes, false);\n\n // 7.4.3.1.6 Text region segment Huffman table selection\n\n let customIndex = 0,\n tableFirstS,\n tableDeltaS,\n tableDeltaT;\n\n switch (textRegion.huffmanFS) {\n case 0:\n case 1:\n tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n break;\n case 3:\n tableFirstS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman FS selector\");\n }\n\n switch (textRegion.huffmanDS) {\n case 0:\n case 1:\n case 2:\n tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n break;\n case 3:\n tableDeltaS = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DS selector\");\n }\n\n switch (textRegion.huffmanDT) {\n case 0:\n case 1:\n case 2:\n tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n break;\n case 3:\n tableDeltaT = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DT selector\");\n }\n\n if (textRegion.refinement) {\n // Load tables RDW, RDH, RDX and RDY.\n throw new Jbig2Error(\"refinement with Huffman is not supported\");\n }\n\n return {\n symbolIDTable,\n tableFirstS,\n tableDeltaS,\n tableDeltaT,\n };\n}\n\nfunction getSymbolDictionaryHuffmanTables(\n dictionary,\n referredTo,\n customTables\n) {\n // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n let customIndex = 0,\n tableDeltaHeight,\n tableDeltaWidth;\n switch (dictionary.huffmanDHSelector) {\n case 0:\n case 1:\n tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n break;\n case 3:\n tableDeltaHeight = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DH selector\");\n }\n\n switch (dictionary.huffmanDWSelector) {\n case 0:\n case 1:\n tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n break;\n case 3:\n tableDeltaWidth = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n break;\n default:\n throw new Jbig2Error(\"invalid Huffman DW selector\");\n }\n\n let tableBitmapSize, tableAggregateInstances;\n if (dictionary.bitmapSizeSelector) {\n tableBitmapSize = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n customIndex++;\n } else {\n tableBitmapSize = getStandardTable(1);\n }\n\n if (dictionary.aggregationInstancesSelector) {\n tableAggregateInstances = getCustomHuffmanTable(\n customIndex,\n referredTo,\n customTables\n );\n } else {\n tableAggregateInstances = getStandardTable(1);\n }\n\n return {\n tableDeltaHeight,\n tableDeltaWidth,\n tableBitmapSize,\n tableAggregateInstances,\n };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n const bitmap = [];\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n for (let x = 0; x < width; x++) {\n row[x] = reader.readBit();\n }\n reader.byteAlign();\n }\n return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n // MMR is the same compression algorithm as the PDF filter\n // CCITTFaxDecode with /K -1.\n const params = {\n K: -1,\n Columns: width,\n Rows: height,\n BlackIs1: true,\n EndOfBlock: endOfBlock,\n };\n const decoder = new CCITTFaxDecoder(input, params);\n const bitmap = [];\n let currentByte,\n eof = false;\n\n for (let y = 0; y < height; y++) {\n const row = new Uint8Array(width);\n bitmap.push(row);\n let shift = -1;\n for (let x = 0; x < width; x++) {\n if (shift < 0) {\n currentByte = decoder.readNextChar();\n if (currentByte === -1) {\n // Set the rest of the bits to zero.\n currentByte = 0;\n eof = true;\n }\n shift = 7;\n }\n row[x] = (currentByte >> shift) & 1;\n shift--;\n }\n }\n\n if (endOfBlock && !eof) {\n // Read until EOFB has been consumed.\n const lookForEOFLimit = 5;\n for (let i = 0; i < lookForEOFLimit; i++) {\n if (decoder.readNextChar() === -1) {\n break;\n }\n }\n }\n\n return bitmap;\n}\n\nclass Jbig2Image {\n parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n }\n\n parse(data) {\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"IMAGE_DECODERS\")) {\n throw new Error(\"Not implemented: Jbig2Image.parse\");\n }\n const { imgData, width, height } = parseJbig2(data);\n this.width = width;\n this.height = height;\n return imgData;\n }\n}\n\nexport { Jbig2Image };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Table C-2\nconst QeTable = [\n { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\n { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\n { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\n { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\n { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\n { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\n { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\n { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\n { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\n { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\n { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\n { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\n { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\n { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\n { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\n { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\n { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\n { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\n { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\n { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\n { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\n { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\n { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\n { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\n { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\n { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\n { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\n { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\n { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\n { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\n { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\n { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\n { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\n { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\n { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\n { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\n { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\n { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\n { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\n { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\n { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\n { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\n { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\n { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\n { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\n { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\n];\n\n/**\n * This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nclass ArithmeticDecoder {\n // C.3.5 Initialisation of the decoder (INITDEC)\n constructor(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\n this.clow = (this.clow << 7) & 0xffff;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n // C.3.4 Compressed data input (BYTEIN)\n byteIn() {\n const data = this.data;\n let bp = this.bp;\n\n if (data[bp] === 0xff) {\n if (data[bp + 1] > 0x8f) {\n this.clow += 0xff00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += data[bp] << 9;\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xffff) {\n this.chigh += this.clow >> 16;\n this.clow &= 0xffff;\n }\n }\n\n // C.3.2 Decoding a decision (DECODE)\n readBit(contexts, pos) {\n // Contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n let cx_index = contexts[pos] >> 1,\n cx_mps = contexts[pos] & 1;\n const qeTableIcx = QeTable[cx_index];\n const qeIcx = qeTableIcx.qe;\n let d;\n let a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xffff) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xffff;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = (cx_index << 1) | cx_mps;\n return d;\n }\n}\n\nexport { ArithmeticDecoder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { JpegImage } from \"./jpg.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG's we use a library to decode these images and the stream behaves\n * like all the other DecodeStreams.\n */\nclass JpegStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n // Some images may contain 'junk' before the SOI (start-of-image) marker.\n // Note: this seems to mainly affect inline images.\n let ch;\n while ((ch = stream.getByte()) !== -1) {\n // Find the first byte of the SOI marker (0xFFD8).\n if (ch === 0xff) {\n stream.skip(-1); // Reset the stream position to the SOI.\n break;\n }\n }\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpegOptions = {\n decodeTransform: undefined,\n colorTransform: undefined,\n };\n\n // Checking if values need to be transformed before conversion.\n const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n if (this.forceRGB && Array.isArray(decodeArr)) {\n const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n const decodeArrLength = decodeArr.length;\n const transform = new Int32Array(decodeArrLength);\n let transformNeeded = false;\n const maxValue = (1 << bitsPerComponent) - 1;\n for (let i = 0; i < decodeArrLength; i += 2) {\n transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n if (transformNeeded) {\n jpegOptions.decodeTransform = transform;\n }\n }\n // Fetching the 'ColorTransform' entry, if it exists.\n if (this.params instanceof Dict) {\n const colorTransform = this.params.get(\"ColorTransform\");\n if (Number.isInteger(colorTransform)) {\n jpegOptions.colorTransform = colorTransform;\n }\n }\n const jpegImage = new JpegImage(jpegOptions);\n\n jpegImage.parse(this.bytes);\n const data = jpegImage.getData({\n width: this.drawWidth,\n height: this.drawHeight,\n forceRGB: this.forceRGB,\n isSourcePDF: true,\n });\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n }\n}\n\nexport { JpegStream };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, BaseException, warn } from \"../shared/util.js\";\nimport { readUint16 } from \"./core_utils.js\";\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(`JPEG error: ${msg}`, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n offset += 2; // Skip marker length.\n\n const scanLines = readUint16(data, offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\n \"Found DNL marker (0xFFDC) while parsing scan data\",\n scanLines\n );\n }\n } else if (nextByte === /* EOI = */ 0xd9) {\n if (parseDNLMarker) {\n // NOTE: only 8-bit JPEG images are supported in this decoder.\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n // Heuristic to attempt to handle corrupt JPEG images with too\n // large `scanLines` parameter, by falling back to the currently\n // parsed number of scanLines when it's at least (approximately)\n // one \"half\" order of magnitude smaller than expected (fixes\n // issue10880.pdf, issue10989.pdf, issue15492.pdf).\n if (\n maybeScanLines > 0 &&\n Math.round(frame.scanLines / maybeScanLines) >= 5\n ) {\n throw new DNLMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n \"possibly caused by incorrect `scanLines` parameter\",\n maybeScanLines\n );\n }\n }\n throw new EOIMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data\"\n );\n }\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0,\n fileMarker;\n let mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const mcuToRead = resetInterval\n ? Math.min(mcuExpected - mcu, resetInterval)\n : mcuExpected;\n\n // The `mcuToRead === 0` case should only occur when all of the expected\n // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n // some corrupt JPEG images contain more data than intended and we thus\n // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n if (!fileMarker) {\n break; // Reached the end of the image data without finding any marker.\n }\n if (fileMarker.invalid) {\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n // past those to attempt to find a valid marker (fixes issue4090.pdf).\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(\n `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n );\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n// 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n// 988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // Convert to 8-bit.\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = (t + 2056) >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // Convert to 8-bit integers.\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\n\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n const currentMarker = readUint16(data, currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let newMarker = readUint16(data, newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = readUint16(data, newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n}\n\nclass JpegImage {\n constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\n this._decodeTransform = decodeTransform;\n this._colorTransform = colorTransform;\n }\n\n parse(data, { dnlScanLines = null } = {}) {\n function readDataBlock() {\n const length = readUint16(data, offset);\n offset += 2;\n let endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker && fileMarker.invalid) {\n warn(\n \"readDataBlock - incorrect length, current marker is: \" +\n fileMarker.invalid\n );\n endOffset = fileMarker.offset;\n }\n\n const array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (const component of frame.components) {\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n\n let fileMarker = readUint16(data, offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n const appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n // 'JFIF\\x00'\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n // 'Adobe'\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65\n ) {\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n const quantizationTablesLength = readUint16(data, offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = readUint16(data, offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2; // Skip marker length.\n\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = readUint16(data, offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = readUint16(data, offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n const huffmanLength = readUint16(data, offset);\n offset += 2;\n for (i = 2; i < huffmanLength; ) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n offset += 2; // Skip marker length.\n\n resetInterval = readUint16(data, offset);\n offset += 2;\n break;\n\n case 0xffda: // SOS (Start of Scan)\n // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n // of the first scan segment and may only occur once in an image.\n // Furthermore, to prevent an infinite loop, do *not* attempt to\n // parse DNL markers during re-parsing of the JPEG scan data.\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n offset += 2; // Skip marker length.\n\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15,\n parseDNLMarker\n );\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, { dnlScanLines: ex.scanLines });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n\n case 0xffdc: // DNL (Define Number of Lines)\n // Ignore the marker, since it's being handled in `decodeScan`.\n offset += 4;\n break;\n\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n // Could be incorrect encoding -- the last 0xFF byte of the previous\n // block could have been eaten by the encoder, hence we fallback to\n // `startPos = offset - 3` when looking for the next valid marker.\n const nextFileMarker = findNextFileMarker(\n data,\n /* currentPos = */ offset - 2,\n /* startPos = */ offset - 3\n );\n if (nextFileMarker && nextFileMarker.invalid) {\n warn(\n \"JpegImage.parse - unexpected data, current marker is: \" +\n nextFileMarker.invalid\n );\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= data.length - 1) {\n warn(\n \"JpegImage.parse - reached the end of the image data \" +\n \"without finding an EOI marker (0xFFD9).\"\n );\n break markerLoop;\n }\n throw new JpegError(\n \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n );\n }\n fileMarker = readUint16(data, offset);\n offset += 2;\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (const component of frame.components) {\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n\n _getLinearizedBlockData(width, height, isSourcePDF = false) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n // component data, that's only necessary when `componentScaleX` changes.\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n lastComponentScaleX = componentScaleX;\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n let transform = this._decodeTransform;\n\n // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n // (this can be observed by extracting the raw image data).\n // Since the conversion algorithms (see below) were written primarily for\n // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n //\n // Unfortunately it's not (always) possible to tell, from the image data\n // alone, if it needs to be inverted. Thus in an attempt to provide better\n // out-of-box behaviour when `JpegImage` is used standalone, default to\n // inverting JPEG (CMYK) images if and only if the image data does *not*\n // come from a PDF file and no `decodeTransform` was passed by the user.\n if (!isSourcePDF && numComponents === 4 && !transform) {\n transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength; ) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n return data;\n }\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n } else if (\n this.components[0].index === /* \"R\" = */ 0x52 &&\n this.components[1].index === /* \"G\" = */ 0x47 &&\n this.components[2].index === /* \"B\" = */ 0x42\n ) {\n // If the three components are indexed as RGB in ASCII\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this._colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n }\n\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n\n _convertYcckToRgb(data) {\n let Y, Cb, Cr, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n -122.67195406894 +\n Cb *\n (-6.60635669420364e-5 * Cb +\n 0.000437130475926232 * Cr -\n 5.4080610064599e-5 * Y +\n 0.00048449797120281 * k -\n 0.154362151871126) +\n Cr *\n (-0.000957964378445773 * Cr +\n 0.000817076911346625 * Y -\n 0.00477271405408747 * k +\n 1.53380253221734) +\n Y *\n (0.000961250184130688 * Y -\n 0.00266257332283933 * k +\n 0.48357088451265) +\n k * (-0.000336197177618394 * k + 0.484791561490776);\n\n data[offset++] =\n 107.268039397724 +\n Cb *\n (2.19927104525741e-5 * Cb -\n 0.000640992018297945 * Cr +\n 0.000659397001245577 * Y +\n 0.000426105652938837 * k -\n 0.176491792462875) +\n Cr *\n (-0.000778269941513683 * Cr +\n 0.00130872261408275 * Y +\n 0.000770482631801132 * k -\n 0.151051492775562) +\n Y *\n (0.00126935368114843 * Y -\n 0.00265090189010898 * k +\n 0.25802910206845) +\n k * (-0.000318913117588328 * k - 0.213742400323665);\n\n data[offset++] =\n -20.810012546947 +\n Cb *\n (-0.000570115196973677 * Cb -\n 2.63409051004589e-5 * Cr +\n 0.0020741088115012 * Y -\n 0.00288260236853442 * k +\n 0.814272968359295) +\n Cr *\n (-1.53496057440975e-5 * Cr -\n 0.000132689043961446 * Y +\n 0.000560833691242812 * k -\n 0.195152027534049) +\n Y *\n (0.00174418132927582 * Y -\n 0.00255243321439347 * k +\n 0.116935020465145) +\n k * (-0.000343531996510555 * k + 0.24165260232407);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n // K in data[i + 3] is unchanged\n }\n return data;\n }\n\n _convertCmykToRgb(data) {\n let c, m, y, k;\n let offset = 0;\n for (let i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n\n data[offset++] =\n 255 +\n c *\n (-0.00006747147073602441 * c +\n 0.0008379262121013727 * m +\n 0.0002894718188643294 * y +\n 0.003264231057537806 * k -\n 1.1185611867203937) +\n m *\n (0.000026374107616089405 * m -\n 0.00008626949158638572 * y -\n 0.0002748769067499491 * k -\n 0.02155688794978967) +\n y *\n (-0.00003878099212869363 * y -\n 0.0003267808279485286 * k +\n 0.0686742238595345) -\n k * (0.0003361971776183937 * k + 0.7430659151342254);\n\n data[offset++] =\n 255 +\n c *\n (0.00013596372813588848 * c +\n 0.000924537132573585 * m +\n 0.00010567359618683593 * y +\n 0.0004791864687436512 * k -\n 0.3109689587515875) +\n m *\n (-0.00023545346108370344 * m +\n 0.0002702845253534714 * y +\n 0.0020200308977307156 * k -\n 0.7488052167015494) +\n y *\n (0.00006834815998235662 * y +\n 0.00015168452363460973 * k -\n 0.09751927774728933) -\n k * (0.0003189131175883281 * k + 0.7364883807733168);\n\n data[offset++] =\n 255 +\n c *\n (0.000013598650411385307 * c +\n 0.00012423956175490851 * m +\n 0.0004751985097583589 * y -\n 0.0000036729317476630422 * k -\n 0.05562186980264034) +\n m *\n (0.00016141380598724676 * m +\n 0.0009692239130725186 * y +\n 0.0007782692450036253 * k -\n 0.44015232367526463) +\n y *\n (5.068882914068769e-7 * y +\n 0.0017778369011375071 * k -\n 0.7591454649749609) -\n k * (0.0003435319965105553 * k + 0.7063770186160144);\n }\n // Ensure that only the converted RGB data is returned.\n return data.subarray(0, offset);\n }\n\n getData({ width, height, forceRGB = false, isSourcePDF = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n isSourcePDF === true,\n 'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.'\n );\n }\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n // Type of data: Uint8ClampedArray(width * height * numComponents)\n const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n if (this.numComponents === 1 && forceRGB) {\n const rgbData = new Uint8ClampedArray(data.length * 3);\n let offset = 0;\n for (const grayColor of data) {\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\nexport { JpegImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nclass JpxStream extends DecodeStream {\n constructor(stream, maybeLength, params) {\n super(maybeLength);\n\n this.stream = stream;\n this.dict = stream.dict;\n this.maybeLength = maybeLength;\n this.params = params;\n }\n\n get bytes() {\n // If `this.maybeLength` is null, we'll get the entire stream.\n return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n }\n\n ensureBuffer(requested) {\n // No-op, since `this.readBlock` will always parse the entire image and\n // directly insert all of its data into `this.buffer`.\n }\n\n readBlock() {\n if (this.eof) {\n return;\n }\n const jpxImage = new JpxImage();\n jpxImage.parse(this.bytes);\n\n const width = jpxImage.width;\n const height = jpxImage.height;\n const componentsCount = jpxImage.componentsCount;\n const tileCount = jpxImage.tiles.length;\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n const data = new Uint8ClampedArray(width * height * componentsCount);\n\n for (let k = 0; k < tileCount; k++) {\n const tileComponents = jpxImage.tiles[k];\n const tileWidth = tileComponents.width;\n const tileHeight = tileComponents.height;\n const tileLeft = tileComponents.left;\n const tileTop = tileComponents.top;\n\n const src = tileComponents.items;\n let srcPosition = 0;\n let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n const imgRowSize = width * componentsCount;\n const tileRowSize = tileWidth * componentsCount;\n\n for (let j = 0; j < tileHeight; j++) {\n const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n this.buffer = data;\n }\n this.bufferLength = this.buffer.length;\n this.eof = true;\n }\n}\n\nexport { JpxStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { BaseException, info, unreachable, warn } from \"../shared/util.js\";\nimport { log2, readUint16, readUint32 } from \"./core_utils.js\";\nimport { ArithmeticDecoder } from \"./arithmetic_decoder.js\";\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(`JPX error: ${msg}`, \"JpxError\");\n }\n}\n\n// Table E.1\nconst SubbandsGainLog2 = {\n LL: 0,\n LH: 1,\n HL: 1,\n HH: 2,\n};\n\nclass JpxImage {\n constructor() {\n this.failOnCorruptedImage = false;\n }\n\n parse(data) {\n const head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xff4f) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n const length = data.length;\n let position = 0;\n while (position < length) {\n let headerSize = 8;\n let lbox = readUint32(data, position);\n const tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox =\n readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new JpxError(\"Invalid box field size\");\n }\n const dataLength = lbox - headerSize;\n let jumpDataLength = true;\n switch (tbox) {\n case 0x6a703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636f6c72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n const method = data[position];\n if (method === 1) {\n // enumerated colorspace\n const colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn(\"Unknown colorspace \" + colorspace);\n break;\n }\n } else if (method === 2) {\n info(\"ICC profile not supported\");\n }\n break;\n case 0x6a703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6a502020: // 'jP\\024\\024'\n if (readUint32(data, position) !== 0x0d0a870a) {\n warn(\"Invalid JP2 signature\");\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6a501a1a: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n const headerType = String.fromCharCode(\n (tbox >> 24) & 0xff,\n (tbox >> 16) & 0xff,\n (tbox >> 8) & 0xff,\n tbox & 0xff\n );\n warn(`Unsupported header type ${tbox} (${headerType}).`);\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n }\n\n parseImageProperties(stream) {\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as `Uint8ClampedArray`s.\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n\n parseCodestream(data, start, end) {\n const context = {};\n let doNotRecover = false;\n try {\n let position = start;\n while (position + 1 < end) {\n const code = readUint16(data, position);\n position += 2;\n\n let length = 0,\n j,\n sqcd,\n spqcds,\n spqcdSize,\n scalarExpounded,\n tile;\n switch (code) {\n case 0xff4f: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xffd9: // End of codestream (EOC)\n break;\n case 0xff51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n const siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n const componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n const components = [];\n j = position + 38;\n for (let i = 0; i < componentsCount; i++) {\n const component = {\n precision: (data[j] & 0x7f) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 2],\n };\n j += 3;\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xff5c: // Quantization default (QCD)\n length = readUint16(data, position);\n const qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcd.noQuantization = spqcdSize === 8;\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xff5d: // Quantization component (QCC)\n length = readUint16(data, position);\n const qcc = {};\n j = position + 2;\n let cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1f) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error(\"Invalid SQcd value \" + sqcd);\n }\n qcc.noQuantization = spqcdSize === 8;\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n const spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xff52: // Coding style default (COD)\n length = readUint16(data, position);\n const cod = {};\n j = position + 2;\n const scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xf) + 2;\n cod.ycb = (data[j++] & 0xf) + 2;\n const blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticallyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n const precinctsSizes = [];\n while (j < length + position) {\n const precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xf,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n const unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push(\"selectiveArithmeticCodingBypass\");\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push(\"terminationOnEachCodingPass\");\n }\n if (cod.verticallyStripe) {\n unsupported.push(\"verticallyStripe\");\n }\n if (cod.predictableTermination) {\n unsupported.push(\"predictableTermination\");\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n warn(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xff90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xff93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xff53: // Coding style component (COC)\n warn(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n /* falls through */\n case 0xff55: // Tile-part lengths, main header (TLM)\n case 0xff57: // Packet length, main header (PLM)\n case 0xff58: // Packet length, tile-part header (PLT)\n case 0xff64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n default:\n throw new Error(\"Unknown codestream code: \" + code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n warn(`JPX: Trying to recover from: \"${e.message}\".`);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n }\n}\n\nfunction calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n}\nfunction calculateTileGrids(context, components) {\n const siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n const tiles = [];\n let tile;\n const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (let q = 0; q < numYtiles; q++) {\n for (let p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n const componentsCount = siz.Csiz;\n for (let i = 0, ii = componentsCount; i < ii; i++) {\n const component = components[i];\n for (let j = 0, jj = tiles.length; j < jj; j++) {\n const tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n}\nfunction getBlocksDimensions(context, component, r) {\n const codOrCoc = component.codingStyleParameters;\n const result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ =\n r > 0\n ? Math.min(codOrCoc.xcb, result.PPx - 1)\n : Math.min(codOrCoc.xcb, result.PPx);\n result.ycb_ =\n r > 0\n ? Math.min(codOrCoc.ycb, result.PPy - 1)\n : Math.min(codOrCoc.ycb, result.PPy);\n return result;\n}\nfunction buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n const precinctWidth = 1 << dimensions.PPx;\n const precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n const isZeroRes = resolution.resLevel === 0;\n const precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n const precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n const numprecinctswide =\n resolution.trx1 > resolution.trx0\n ? Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth)\n : 0;\n const numprecinctshigh =\n resolution.try1 > resolution.try0\n ? Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight)\n : 0;\n const numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n}\nfunction buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n const xcb_ = dimensions.xcb_;\n const ycb_ = dimensions.ycb_;\n const codeblockWidth = 1 << xcb_;\n const codeblockHeight = 1 << ycb_;\n const cbx0 = subband.tbx0 >> xcb_;\n const cby0 = subband.tby0 >> ycb_;\n const cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n const cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n const precinctParameters = subband.resolution.precinctParameters;\n const codeblocks = [];\n const precincts = [];\n let i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1),\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n const pi = Math.floor(\n (codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband\n );\n const pj = Math.floor(\n (codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband\n );\n precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (\n codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_\n ) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n let precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j,\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1,\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n}\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n const precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n const subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (let i = 0, ii = subbands.length; i < ii; i++) {\n const subband = subbands[i];\n const codeblocks = subband.codeblocks;\n for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n const codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber,\n codeblocks: precinctCodeblocks,\n };\n}\nfunction LayerResolutionComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let l = 0,\n r = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionLayerComponentPositionIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let maxDecompositionLevelsCount = 0;\n for (let q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount\n );\n }\n\n let r = 0,\n l = 0,\n i = 0,\n k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n const component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts; ) {\n const packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ResolutionPositionComponentLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n let l, r, c, p;\n let maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(\n maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount\n );\n }\n const maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1\n );\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n let maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n const resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(\n maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts\n );\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n const resolution = component.resolutions[r];\n const numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction PositionComponentResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n const precinctsIterationSizes = precinctsSizes;\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction ComponentPositionResolutionLayerIterator(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const layersCount = tile.codingStyleDefaultParameters.layersCount;\n const componentsCount = siz.Csiz;\n const precinctsSizes = getPrecinctSizesInImageScale(tile);\n let l = 0,\n r = 0,\n c = 0,\n px = 0,\n py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n const component = tile.components[c];\n const precinctsIterationSizes = precinctsSizes.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n const resolution = component.resolutions[r];\n const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n const k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution\n );\n if (k === null) {\n continue;\n }\n for (; l < layersCount; ) {\n const packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n throw new JpxError(\"Out of packets\");\n };\n}\nfunction getPrecinctIndexIfExist(\n pxIndex,\n pyIndex,\n sizeInImageScale,\n precinctIterationSizes,\n resolution\n) {\n const posX = pxIndex * precinctIterationSizes.minWidth;\n const posY = pyIndex * precinctIterationSizes.minHeight;\n if (\n posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0\n ) {\n return null;\n }\n const startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\nfunction getPrecinctSizesInImageScale(tile) {\n const componentsCount = tile.components.length;\n let minWidth = Number.MAX_VALUE;\n let minHeight = Number.MAX_VALUE;\n let maxNumWide = 0;\n let maxNumHigh = 0;\n const sizePerComponent = new Array(componentsCount);\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n const sizePerResolution = new Array(decompositionLevelsCount + 1);\n let minWidthCurrentComponent = Number.MAX_VALUE;\n let minHeightCurrentComponent = Number.MAX_VALUE;\n let maxNumWideCurrentComponent = 0;\n let maxNumHighCurrentComponent = 0;\n let scale = 1;\n for (let r = decompositionLevelsCount; r >= 0; --r) {\n const resolution = component.resolutions[r];\n const widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n const heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution\n );\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution\n );\n maxNumWideCurrentComponent = Math.max(\n maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide\n );\n maxNumHighCurrentComponent = Math.max(\n maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh\n );\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution,\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent,\n };\n }\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh,\n };\n}\nfunction buildPackets(context) {\n const siz = context.SIZ;\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n const resolutions = [];\n const subbands = [];\n for (let r = 0; r <= decompositionLevelsCount; r++) {\n const blocksDimensions = getBlocksDimensions(context, component, r);\n const resolution = {};\n const scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n let subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = \"LL\";\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n const bscale = 1 << (decompositionLevelsCount - r + 1);\n const resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = \"HL\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"LH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = \"HH\";\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator = new LayerResolutionComponentPositionIterator(\n context\n );\n break;\n case 1:\n tile.packetsIterator = new ResolutionLayerComponentPositionIterator(\n context\n );\n break;\n case 2:\n tile.packetsIterator = new ResolutionPositionComponentLayerIterator(\n context\n );\n break;\n case 3:\n tile.packetsIterator = new PositionComponentResolutionLayerIterator(\n context\n );\n break;\n case 4:\n tile.packetsIterator = new ComponentPositionResolutionLayerIterator(\n context\n );\n break;\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n}\nfunction parseTilePackets(context, data, offset, dataLength) {\n let position = 0;\n let buffer,\n bufferSize = 0,\n skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n const b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xff) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (\n data[offset + position - 1] === 0xff &&\n data[offset + position] === value\n ) {\n skipBytes(1);\n return true;\n } else if (\n data[offset + position] === 0xff &&\n data[offset + position + 1] === value\n ) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n let value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n const tileIndex = context.currentTile.index;\n const tile = context.tiles[tileIndex];\n const sopMarkerUsed = context.COD.sopMarkerUsed;\n const ephMarkerUsed = context.COD.ephMarkerUsed;\n const packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n const packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n const layerNumber = packet.layerNumber,\n queue = [];\n let codeblock;\n for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n let precinct = codeblock.precinct;\n const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n const codeblockRow = codeblock.cby - precinct.cbyMin;\n let codeblockIncluded = false;\n let firstTimeInclusion = false;\n let valueReady, zeroBitPlanesTree;\n if (codeblock.included !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n let inclusionTree;\n if (precinct.inclusionTree !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n const width = precinct.cbxMax - precinct.cbxMin + 1;\n const height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n for (let l = 0; l < layerNumber; l++) {\n if (readBits(1) !== 0) {\n throw new JpxError(\"Invalid tag tree\");\n }\n }\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n const codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n const codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n const bits =\n (codingpasses < 1 << codingpassesLog2\n ? codingpassesLog2 - 1\n : codingpassesLog2) + codeblock.Lblock;\n const codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength,\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n const packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock.data === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses,\n });\n position += packetItem.dataLength;\n }\n }\n return position;\n}\nfunction copyCoefficients(\n coefficients,\n levelWidth,\n levelHeight,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n) {\n const x0 = subband.tbx0;\n const y0 = subband.tby0;\n const width = subband.tbx1 - subband.tbx0;\n const codeblocks = subband.codeblocks;\n const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n const codeblock = codeblocks[i];\n const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock.data === undefined) {\n continue;\n }\n\n const bitModel = new BitModel(\n blockWidth,\n blockHeight,\n codeblock.subbandType,\n codeblock.zeroBitPlanes,\n mb\n );\n let currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n const data = codeblock.data;\n let totalLength = 0,\n codingpasses = 0;\n let j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n const encodedData = new Uint8Array(totalLength);\n let position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n const decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n\n if (resetContextProbabilities) {\n bitModel.reset();\n }\n\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n const sign = bitModel.coefficentsSign;\n const magnitude = bitModel.coefficentsMagnitude;\n const bitsDecoded = bitModel.bitsDecoded;\n const magnitudeCorrection = reversible ? 0 : 0.5;\n let k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n const interleave = subband.type !== \"LL\";\n for (j = 0; j < blockHeight; j++) {\n const row = (offset / width) | 0; // row in the non-interleaved subband\n const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n const pos = interleave ? levelOffset + (offset << 1) : offset;\n if (reversible && nb >= mb) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n}\nfunction transformTile(context, tile, c) {\n const component = tile.components[c];\n const codingStyleParameters = component.codingStyleParameters;\n const quantizationParameters = component.quantizationParameters;\n const decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n const spqcds = quantizationParameters.SPqcds;\n const scalarExpounded = quantizationParameters.scalarExpounded;\n const guardBits = quantizationParameters.guardBits;\n const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n const resetContextProbabilities =\n codingStyleParameters.resetContextProbabilities;\n const precision = context.components[c].precision;\n\n const reversible = codingStyleParameters.reversibleTransformation;\n const transform = reversible\n ? new ReversibleTransform()\n : new IrreversibleTransform();\n\n const subbandCoefficients = [];\n let b = 0;\n for (let i = 0; i <= decompositionLevelsCount; i++) {\n const resolution = component.resolutions[i];\n\n const width = resolution.trx1 - resolution.trx0;\n const height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n const coefficients = new Float32Array(width * height);\n\n for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n let mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n const subband = resolution.subbands[j];\n const gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n const delta = reversible\n ? 1\n : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n const mb = guardBits + epsilon - 1;\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(\n coefficients,\n width,\n height,\n subband,\n delta,\n mb,\n reversible,\n segmentationSymbolUsed,\n resetContextProbabilities\n );\n }\n subbandCoefficients.push({\n width,\n height,\n items: coefficients,\n });\n }\n\n const result = transform.calculate(\n subbandCoefficients,\n component.tcx0,\n component.tcy0\n );\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items,\n };\n}\nfunction transformComponents(context) {\n const siz = context.SIZ;\n const components = context.components;\n const componentsCount = siz.Csiz;\n const resultImages = [];\n for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n const tile = context.tiles[i];\n const transformedTiles = [];\n for (let c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n const tile0 = transformedTiles[0];\n const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n const result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out,\n };\n\n // Section G.2.2 Inverse multi component transform\n let shift, offset;\n let pos = 0,\n j,\n jj,\n y0,\n y1,\n y2;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n const fourComponents = componentsCount === 4;\n const y0items = transformedTiles[0].items;\n const y1items = transformedTiles[1].items;\n const y2items = transformedTiles[2].items;\n const y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n\n const component0 = tile.components[0];\n const alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n out[pos++] = (y0 + 1.402 * y2) >> shift;\n out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n out[pos++] = (y0 + 1.772 * y1) >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n const g = y0 - ((y2 + y1) >> 2);\n\n out[pos++] = (g + y2) >> shift;\n out[pos++] = g >> shift;\n out[pos++] = (g + y1) >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n out[pos] = (y3items[j] + offset) >> shift;\n }\n }\n } else {\n // no multi-component transform\n for (let c = 0; c < componentsCount; c++) {\n const items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n out[pos] = (items[j] + offset) >> shift;\n pos += componentsCount;\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n}\nfunction initializeTile(context, tileIndex) {\n const siz = context.SIZ;\n const componentsCount = siz.Csiz;\n const tile = context.tiles[tileIndex];\n for (let c = 0; c < componentsCount; c++) {\n const component = tile.components[c];\n const qcdOrQcc =\n context.currentTile.QCC[c] !== undefined\n ? context.currentTile.QCC[c]\n : context.currentTile.QCD;\n component.quantizationParameters = qcdOrQcc;\n const codOrCoc =\n context.currentTile.COC[c] !== undefined\n ? context.currentTile.COC[c]\n : context.currentTile.COD;\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\n// Section B.10.2 Tag trees\nclass TagTree {\n constructor(width, height) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const level = {\n width,\n height,\n items: [],\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j) {\n let currentLevel = 0,\n value = 0,\n level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n const index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n }\n\n incrementValue() {\n const level = this.levels[this.currentLevel];\n level.items[level.index]++;\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\nclass InclusionTree {\n constructor(width, height, defaultValue) {\n const levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (let i = 0; i < levelsLength; i++) {\n const items = new Uint8Array(width * height);\n for (let j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n const level = {\n width,\n height,\n items,\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n\n reset(i, j, stopValue) {\n let currentLevel = 0;\n while (currentLevel < this.levels.length) {\n const level = this.levels[currentLevel];\n const index = i + j * level.width;\n level.index = index;\n const value = level.items[index];\n\n if (value === 0xff) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n // already know about this one, propagating the value to top levels\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n this.currentLevel = currentLevel - 1;\n return true;\n }\n\n incrementValue(stopValue) {\n const level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n }\n\n propagateValues() {\n let levelIndex = this.currentLevel;\n let level = this.levels[levelIndex];\n const currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n }\n\n nextLevel() {\n let currentLevel = this.currentLevel;\n let level = this.levels[currentLevel];\n const value = level.items[level.index];\n level.items[level.index] = 0xff;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n }\n}\n\n// Section D. Coefficient bit modeling\nconst BitModel = (function BitModelClosure() {\n const UNIFORM_CONTEXT = 17;\n const RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n const LLAndLHContextsLabel = new Uint8Array([\n 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8,\n ]);\n const HLContextLabel = new Uint8Array([\n 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8,\n ]);\n const HHContextLabel = new Uint8Array([\n 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8,\n ]);\n\n // eslint-disable-next-line no-shadow\n class BitModel {\n constructor(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n let contextLabelTable;\n if (subband === \"HH\") {\n contextLabelTable = HHContextLabel;\n } else if (subband === \"HL\") {\n contextLabelTable = HLContextLabel;\n } else {\n contextLabelTable = LLAndLHContextsLabel;\n }\n this.contextLabelTable = contextLabelTable;\n\n const coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n let coefficentsMagnitude;\n if (mb > 14) {\n coefficentsMagnitude = new Uint32Array(coefficientCount);\n } else if (mb > 6) {\n coefficentsMagnitude = new Uint16Array(coefficientCount);\n } else {\n coefficentsMagnitude = new Uint8Array(coefficientCount);\n }\n this.coefficentsMagnitude = coefficentsMagnitude;\n this.processingFlags = new Uint8Array(coefficientCount);\n\n const bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (let i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n setDecoder(decoder) {\n this.decoder = decoder;\n }\n\n reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n }\n\n setNeighborsSignificance(row, column, index) {\n const neighborsSignificance = this.neighborsSignificance;\n const width = this.width,\n height = this.height;\n const left = column > 0;\n const right = column + 1 < width;\n let i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n }\n\n runSignificancePropagationPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const neighborsSignificance = this.neighborsSignificance;\n const processingFlags = this.processingFlags;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processedInverseMask = ~1;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n\n for (let i0 = 0; i0 < height; i0 += 4) {\n for (let j = 0; j < width; j++) {\n let index = i0 * width + j;\n for (let i1 = 0; i1 < 4; i1++, index += width) {\n const i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n const sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n decodeSignBit(row, column, index) {\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n let contribution, sign0, sign1, significance1;\n let contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n const horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n }\n\n runMagnitudeRefinementPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const neighborsSignificance = this.neighborsSignificance;\n const contexts = this.contexts;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const length = width * height;\n const width4 = width * 4;\n\n for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (let j = 0; j < width; j++) {\n for (let index = index0 + j; index < indexNext; index += width) {\n // significant but not those that have just become\n if (\n !coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n let contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n const significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n const bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n }\n\n runCleanupPass() {\n const decoder = this.decoder;\n const width = this.width,\n height = this.height;\n const neighborsSignificance = this.neighborsSignificance;\n const coefficentsMagnitude = this.coefficentsMagnitude;\n const coefficentsSign = this.coefficentsSign;\n const contexts = this.contexts;\n const labels = this.contextLabelTable;\n const bitsDecoded = this.bitsDecoded;\n const processingFlags = this.processingFlags;\n const processedMask = 1;\n const firstMagnitudeBitMask = 2;\n const oneRowDown = width;\n const twoRowsDown = width * 2;\n const threeRowsDown = width * 3;\n let iNext;\n for (let i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n const indexBase = i0 * width;\n const checkAllEmpty = i0 + 3 < height;\n for (let j = 0; j < width; j++) {\n const index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n const allEmpty =\n checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0;\n let i1 = 0,\n index = index0;\n let i = i0,\n sign;\n if (allEmpty) {\n const hasSignificantCoefficent = decoder.readBit(\n contexts,\n RUNLENGTH_CONTEXT\n );\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (let i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (\n coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0\n ) {\n continue;\n }\n\n const contextLabel = labels[neighborsSignificance[index]];\n const decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n }\n\n checkSegmentationSymbol() {\n const decoder = this.decoder;\n const contexts = this.contexts;\n const symbol =\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xa) {\n throw new JpxError(\"Invalid segmentation symbol\");\n }\n }\n }\n\n return BitModel;\n})();\n\n// Section F, Discrete wavelet transformation\nclass Transform {\n constructor() {\n if (this.constructor === Transform) {\n unreachable(\"Cannot initialize Transform.\");\n }\n }\n\n calculate(subbands, u0, v0) {\n let ll = subbands[0];\n for (let i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n }\n\n extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n let i1 = offset - 1,\n j1 = offset + 1;\n let i2 = offset + size - 2,\n j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n }\n\n filter(x, offset, length) {\n unreachable(\"Abstract method `filter` called\");\n }\n\n iterate(ll, hl_lh_hh, u0, v0) {\n const llWidth = ll.width,\n llHeight = ll.height;\n let llItems = ll.items;\n const width = hl_lh_hh.width;\n const height = hl_lh_hh.height;\n const items = hl_lh_hh.items;\n let i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n const bufferPadding = 4;\n const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n let numBuffers = 16;\n const colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n let b,\n currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n const buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return { width, height, items };\n }\n}\n\n// Section 3.8.2 Irreversible 9-7 filter\nclass IrreversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n, current, next;\n\n const alpha = -1.586134342059924;\n const beta = -0.052980118572961;\n const gamma = 0.882911075530934;\n const delta = 0.443506852043971;\n const K = 1.230174104914001;\n const K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j - 1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n }\n}\n\n// Section 3.8.1 Reversible 5-3 filter\nclass ReversibleTransform extends Transform {\n filter(x, offset, length) {\n const len = length >> 1;\n offset |= 0;\n let j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n }\n}\n\nexport { JpxImage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass LZWStream extends DecodeStream {\n constructor(str, maybeLength, earlyChange) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n const maxLzwDictionarySize = 4096;\n const lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (let i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n }\n\n readBits(n) {\n let bitsCached = this.bitsCached;\n let cachedData = this.cachedData;\n while (bitsCached < n) {\n const c = this.str.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n this.lastCode = null;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n }\n\n readBlock() {\n const blockSize = 512,\n decodedSizeDelta = blockSize;\n let estimatedDecodedSize = blockSize * 2;\n let i, j, q;\n\n const lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n const earlyChange = lzwState.earlyChange;\n let nextCode = lzwState.nextCode;\n const dictionaryValues = lzwState.dictionaryValues;\n const dictionaryLengths = lzwState.dictionaryLengths;\n const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n let codeLength = lzwState.codeLength;\n let prevCode = lzwState.prevCode;\n const currentSequence = lzwState.currentSequence;\n let currentSequenceLength = lzwState.currentSequenceLength;\n\n let decodedLength = 0;\n let currentBufferLength = this.bufferLength;\n let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n const code = this.readBits(codeLength);\n const hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength =\n (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n ? codeLength\n : Math.min(\n Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1,\n 12\n ) | 0;\n }\n prevCode = code;\n\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n\n this.bufferLength = currentBufferLength;\n }\n}\n\nexport { LZWStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { Dict } from \"./primitives.js\";\nimport { FormatError } from \"../shared/util.js\";\n\nclass PredictorStream extends DecodeStream {\n constructor(str, maybeLength, params) {\n super(maybeLength);\n\n if (!(params instanceof Dict)) {\n return str; // no prediction\n }\n const predictor = (this.predictor = params.get(\"Predictor\") || 1);\n\n if (predictor <= 1) {\n return str; // no prediction\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n\n const colors = (this.colors = params.get(\"Colors\") || 1);\n const bits = (this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8);\n const columns = (this.columns = params.get(\"Columns\") || 1);\n\n this.pixBytes = (colors * bits + 7) >> 3;\n this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n return this;\n }\n\n readBlockTiff() {\n const rowBytes = this.rowBytes;\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n const bits = this.bits;\n const colors = this.colors;\n\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n let inbuf = 0,\n outbuf = 0;\n let inbits = 0,\n outbits = 0;\n let pos = bufferLength;\n let i;\n\n if (bits === 1 && colors === 1) {\n // Optimized version of the loop in the \"else\"-branch\n // for 1 bit-per-component and 1 color TIFF images.\n for (i = 0; i < rowBytes; ++i) {\n let c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else if (bits === 16) {\n const bytesPerPixel = colors * 2;\n for (i = 0; i < bytesPerPixel; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; i += 2) {\n const sum =\n ((rawBytes[i] & 0xff) << 8) +\n (rawBytes[i + 1] & 0xff) +\n ((buffer[pos - bytesPerPixel] & 0xff) << 8) +\n (buffer[pos - bytesPerPixel + 1] & 0xff);\n buffer[pos++] = (sum >> 8) & 0xff;\n buffer[pos++] = sum & 0xff;\n }\n } else {\n const compArray = new Uint8Array(colors + 1);\n const bitMask = (1 << bits) - 1;\n let j = 0,\n k = bufferLength;\n const columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (let kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xff);\n inbits += 8;\n }\n compArray[kk] =\n (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] =\n (outbuf << (8 - outbits)) + (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n }\n\n readBlockPng() {\n const rowBytes = this.rowBytes;\n const pixBytes = this.pixBytes;\n\n const predictor = this.str.getByte();\n const rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n const bufferLength = this.bufferLength;\n const buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n let i,\n j = bufferLength,\n up,\n c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] =\n (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\n j++;\n }\n break;\n case 4:\n // we need to save the up left pixels values. the simplest way\n // is to create a new buffer\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n const upLeft = prevRow[i - pixBytes];\n const left = buffer[j - pixBytes];\n const p = left + up - upLeft;\n\n let pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n let pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n let pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n }\n}\n\nexport { PredictorStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nclass RunLengthStream extends DecodeStream {\n constructor(str, maybeLength) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n }\n\n readBlock() {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n const repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n let buffer;\n let bufferLength = this.bufferLength;\n let n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n const source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n const b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (let i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n }\n}\n\nexport { RunLengthStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FormatError,\n info,\n shadow,\n string32,\n warn,\n} from \"../shared/util.js\";\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport {\n FontFlags,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n} from \"./fonts_utils.js\";\nimport {\n getCharUnicodeCategory,\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\n} from \"./unicode.js\";\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \"./glyphlist.js\";\nimport {\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n} from \"./encodings.js\";\nimport {\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n} from \"./standard_fonts.js\";\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \"./to_unicode_map.js\";\nimport { CFFFont } from \"./cff_font.js\";\nimport { FontRendererFactory } from \"./font_renderer.js\";\nimport { getFontBasicMetrics } from \"./metrics.js\";\nimport { GlyfTable } from \"./glyf.js\";\nimport { IdentityCMap } from \"./cmap.js\";\nimport { OpenTypeFileBuilder } from \"./opentype_file_builder.js\";\nimport { readUint32 } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Font } from \"./type1_font.js\";\n\n// Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n [0xe000, 0xf8ff], // BMP (0)\n [0x100000, 0x10fffd], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nconst PDF_GLYPH_SPACE_UNITS = 1000;\n\nconst EXPORT_DATA_PROPERTIES = [\n \"ascent\",\n \"bbox\",\n \"black\",\n \"bold\",\n \"charProcOperatorList\",\n \"composite\",\n \"cssFontInfo\",\n \"data\",\n \"defaultVMetrics\",\n \"defaultWidth\",\n \"descent\",\n \"fallbackName\",\n \"fontMatrix\",\n \"isInvalidPDFjsFont\",\n \"isType3Font\",\n \"italic\",\n \"loadedName\",\n \"mimetype\",\n \"missingFile\",\n \"name\",\n \"remeasure\",\n \"subtype\",\n \"type\",\n \"vertical\",\n];\n\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\n \"cMap\",\n \"defaultEncoding\",\n \"differences\",\n \"isMonospace\",\n \"isSerifFont\",\n \"isSymbolicFont\",\n \"seacMap\",\n \"toFontChar\",\n \"toUnicode\",\n \"vmetrics\",\n \"widths\",\n];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n // adjusting width to fontMatrix scale\n const scale = 0.001 / properties.fontMatrix[0];\n const glyphsWidths = properties.widths;\n for (const glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return; // The font dictionary has a `ToUnicode` entry.\n }\n if (properties.hasEncoding) {\n return; // The font dictionary has an `Encoding` entry.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n if (!isSymbolicFont) {\n return; // A non-symbolic font should default to `StandardEncoding`.\n }\n if (nameRecords.length === 0) {\n return;\n }\n\n // Try to infer if the fallback encoding should really be `WinAnsiEncoding`.\n if (properties.defaultEncoding === WinAnsiEncoding) {\n return;\n }\n for (const r of nameRecords) {\n if (!isWinNameRecord(r)) {\n return; // Not Windows, hence `WinAnsiEncoding` wouldn't make sense.\n }\n }\n const encoding = WinAnsiEncoding;\n\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in encoding) {\n const glyphName = encoding[charCode];\n if (glyphName === \"\") {\n continue;\n }\n const unicode = glyphsUnicodeMap[glyphName];\n if (unicode === undefined) {\n continue;\n }\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nfunction adjustType1ToUnicode(properties, builtInEncoding) {\n if (properties.isInternalFont) {\n return;\n }\n if (properties.hasIncludedToUnicodeMap) {\n return; // The font dictionary has a `ToUnicode` entry.\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return; // No point in trying to adjust `toUnicode` if the encodings match.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [],\n glyphsUnicodeMap = getGlyphsUnicode();\n for (const charCode in builtInEncoding) {\n if (properties.hasEncoding) {\n if (\n properties.baseEncodingName ||\n properties.differences[charCode] !== undefined\n ) {\n continue; // The font dictionary has an `Encoding`/`Differences` entry.\n }\n }\n const glyphName = builtInEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\n/**\n * NOTE: This function should only be called at the *end* of font-parsing,\n * after e.g. `adjustType1ToUnicode` has run, to prevent any issues.\n */\nfunction amendFallbackToUnicode(properties) {\n if (!properties.fallbackToUnicode) {\n return;\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n const toUnicode = [];\n for (const charCode in properties.fallbackToUnicode) {\n if (properties.toUnicode.has(charCode)) {\n continue; // The font dictionary has a `ToUnicode` entry.\n }\n toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n }\n if (toUnicode.length > 0) {\n properties.toUnicode.amend(toUnicode);\n }\n}\n\nclass Glyph {\n constructor(\n originalCharCode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n ) {\n this.originalCharCode = originalCharCode;\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n }\n\n /**\n * This property, which is only used by `PartialEvaluator.getTextContent`,\n * is purposely made non-serializable.\n * @type {Object}\n */\n get category() {\n return shadow(\n this,\n \"category\",\n getCharUnicodeCategory(this.unicode),\n /* nonSerializable = */ true\n );\n }\n\n /**\n * This property, which is only used by `PartialEvaluator.getTextContent`,\n * is purposely made non-serializable.\n * @type {string}\n */\n get normalizedUnicode() {\n return shadow(\n this,\n \"normalizedUnicode\",\n reverseIfRtl(Glyph._NormalizedUnicodes[this.unicode] || this.unicode),\n /* nonSerializable = */ true\n );\n }\n\n static get _NormalizedUnicodes() {\n return shadow(this, \"_NormalizedUnicodes\", getNormalizedUnicodes());\n }\n}\n\nfunction int16(b0, b1) {\n return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n bytes[index + 1] = value;\n bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n const value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 16,\n `string16: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && !Number.isNaN(value),\n `safeString16: Unexpected input \"${value}\".`\n );\n }\n // clamp value to the 16-bit int range\n if (value > 0x7fff) {\n value = 0x7fff;\n } else if (value < -0x8000) {\n value = -0x8000;\n }\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n const header = file.peekBytes(4);\n return (\n readUint32(header, 0) === 0x00010000 || bytesToString(header) === \"true\"\n );\n}\n\nfunction isTrueTypeCollectionFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n const header = file.peekBytes(4);\n return bytesToString(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n const header = file.peekBytes(2);\n // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n // ... obviously some fonts violate that part of the specification,\n // please refer to the comment in |Type1Font| below (pfb file header).\n if (header[0] === 0x80 && header[1] === 0x01) {\n return true;\n }\n return false;\n}\n\n/**\n * Compared to other font formats, the header in CFF files is not constant\n * but contains version numbers. To reduce the possibility of misclassifying\n * font files as CFF, it's recommended to check for other font formats first.\n */\nfunction isCFFFile(file) {\n const header = file.peekBytes(4);\n if (\n /* major version, [1, 255] */ header[0] >= 1 &&\n /* minor version, [0, 255]; header[1] */\n /* header size, [0, 255]; header[2] */\n /* offset(0) size, [1, 4] */ header[3] >= 1 &&\n header[3] <= 4\n ) {\n return true;\n }\n return false;\n}\n\nfunction getFontFileType(file, { type, subtype, composite }) {\n let fileType, fileSubtype;\n\n if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"TrueType\";\n }\n } else if (isOpenTypeFile(file)) {\n if (composite) {\n fileType = \"CIDFontType2\";\n } else {\n fileType = \"OpenType\";\n }\n } else if (isType1File(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n }\n } else if (isCFFFile(file)) {\n if (composite) {\n fileType = \"CIDFontType0\";\n fileSubtype = \"CIDFontType0C\";\n } else {\n fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n fileSubtype = \"Type1C\";\n }\n } else {\n warn(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n fileType = type;\n fileSubtype = subtype;\n }\n\n return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n for (const charCode in glyphMap) {\n map[+charCode] = glyphMap[charCode];\n }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n const toFontChar = [];\n let unicode;\n for (let i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (const charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n}\n\n// Please refer to:\n// - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html\nfunction isMacNameRecord(r) {\n return r.platform === 1 && r.encoding === 0 && r.language === 0;\n}\n\n// Please refer to:\n// - https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html\n// - https://learn.microsoft.com/en-us/typography/opentype/spec/name#windows-language-ids\nfunction isWinNameRecord(r) {\n return r.platform === 3 && r.encoding === 1 && r.language === 0x409;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n switch (cid.length) {\n case 1:\n return cid.charCodeAt(0);\n case 2:\n return (cid.charCodeAt(0) << 8) | cid.charCodeAt(1);\n }\n const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n if (shouldThrow) {\n throw new FormatError(msg);\n }\n warn(msg);\n return cid;\n}\n\n/**\n * Rebuilds the char code to glyph ID map by moving all char codes to the\n * private use area. This is done to avoid issues with various problematic\n * unicode areas where either a glyph won't be drawn or is deformed by a\n * shaper.\n * @returns {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) {\n const newMap = Object.create(null);\n const toUnicodeExtraMap = new Map();\n const toFontChar = [];\n const usedGlyphIds = new Set();\n let privateUseAreaIndex = 0;\n const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n let nextAvailableFontCharCode = privateUseOffetStart;\n let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n for (let originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n let glyphId = charCodeToGlyphId[originalCharCode];\n // For missing glyphs don't create the mappings so the glyph isn't\n // drawn.\n if (!hasGlyph(glyphId)) {\n continue;\n }\n if (nextAvailableFontCharCode > privateUseOffetEnd) {\n privateUseAreaIndex++;\n if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n warn(\"Ran out of space in font private use area.\");\n break;\n }\n nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n }\n const fontCharCode = nextAvailableFontCharCode++;\n if (glyphId === 0) {\n glyphId = newGlyphZeroId;\n }\n\n // Fix for bug 1778484:\n // The charcodes are moved into a private use area to fix some rendering\n // issues (https://github.com/mozilla/pdf.js/pull/9340) but when printing\n // to PDF the generated font will contain wrong chars. We can avoid that by\n // adding the unicode to the cmap and the print backend will then map the\n // glyph ids to the correct unicode.\n let unicode = toUnicode.get(originalCharCode);\n if (typeof unicode === \"string\") {\n unicode = unicode.codePointAt(0);\n }\n if (\n unicode &&\n unicode < privateUseOffetStart &&\n !usedGlyphIds.has(glyphId)\n ) {\n toUnicodeExtraMap.set(unicode, glyphId);\n usedGlyphIds.add(glyphId);\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n toUnicodeExtraMap,\n nextAvailableFontCharCode,\n };\n}\n\nfunction getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n const codes = [];\n for (const charCode in glyphs) {\n // Remove an invalid glyph ID mappings to make OTS happy.\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\n }\n if (toUnicodeExtraMap) {\n for (const [unicode, glyphId] of toUnicodeExtraMap) {\n if (glyphId >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: unicode, glyphId });\n }\n }\n // Some fonts have zero glyphs and are used only for text selection, but\n // there needs to be at least one to build a valid cmap table.\n if (codes.length === 0) {\n codes.push({ fontCharCode: 0, glyphId: 0 });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n\n // Split the sorted codes into ranges.\n const ranges = [];\n const length = codes.length;\n for (let n = 0; n < length; ) {\n const start = codes[n].fontCharCode;\n const codeIndices = [codes[n].glyphId];\n ++n;\n let end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xffff) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n}\n\nfunction createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) {\n const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs);\n const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1;\n let cmap =\n \"\\x00\\x00\" + // version\n string16(numTables) + // numTables\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x01\" + // encodingID\n string32(4 + numTables * 8); // start of the table record\n\n let i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xffff) {\n break;\n }\n }\n const bmpLength = i + 1;\n\n if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n ranges[i][1] = 0xfffe;\n }\n const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n const segCount = bmpLength + trailingRangesCount;\n const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n let startCount = \"\";\n let endCount = \"\";\n let idDeltas = \"\";\n let idRangeOffsets = \"\";\n let glyphsIds = \"\";\n let bias = 0;\n\n let range, start, end, codes;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n let contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n const offset = (segCount - i) * 2 + bias * 2;\n bias += end - start + 1;\n\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n const startCode = codes[0];\n\n idDeltas += string16((startCode - start) & 0xffff);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += \"\\xFF\\xFF\";\n startCount += \"\\xFF\\xFF\";\n idDeltas += \"\\x00\\x01\";\n idRangeOffsets += \"\\x00\\x00\";\n }\n\n const format314 =\n \"\\x00\\x00\" + // language\n string16(2 * segCount) +\n string16(searchParams.range) +\n string16(searchParams.entry) +\n string16(searchParams.rangeShift) +\n endCount +\n \"\\x00\\x00\" +\n startCount +\n idDeltas +\n idRangeOffsets +\n glyphsIds;\n\n let format31012 = \"\";\n let header31012 = \"\";\n if (numTables > 1) {\n cmap +=\n \"\\x00\\x03\" + // platformID\n \"\\x00\\x0A\" + // encodingID\n string32(4 + numTables * 8 + 4 + format314.length); // start of the table record\n format31012 = \"\";\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n let code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 +=\n string32(start) + // startCharCode\n string32(end) + // endCharCode\n string32(code); // startGlyphID\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 +=\n string32(start) + // startCharCode\n string32(range[1]) + // endCharCode\n string32(code); // startGlyphID\n }\n header31012 =\n \"\\x00\\x0C\" + // format\n \"\\x00\\x00\" + // reserved\n string32(format31012.length + 16) + // length\n \"\\x00\\x00\\x00\\x00\" + // language\n string32(format31012.length / 12); // nGroups\n }\n\n return (\n cmap +\n \"\\x00\\x04\" + // format\n string16(format314.length + 4) + // length\n format314 +\n header31012 +\n format31012\n );\n}\n\nfunction validateOS2Table(os2, file) {\n file.pos = (file.start || 0) + os2.offset;\n const version = file.getUint16();\n // TODO verify all OS/2 tables fields, but currently we validate only those\n // that give us issues\n file.skip(60); // skipping type, misc sizes, panose, unicode ranges\n const selection = file.getUint16();\n if (version < 4 && selection & 0x0300) {\n return false;\n }\n const firstChar = file.getUint16();\n const lastChar = file.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n file.skip(6); // skipping sTypoAscender/Descender/LineGap\n const usWinAscent = file.getUint16();\n if (usWinAscent === 0) {\n // makes font unreadable by windows\n return false;\n }\n\n // OS/2 appears to be valid, resetting some fields\n os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0,\n };\n\n let ulUnicodeRange1 = 0;\n let ulUnicodeRange2 = 0;\n let ulUnicodeRange3 = 0;\n let ulUnicodeRange4 = 0;\n\n let firstCharIndex = null;\n let lastCharIndex = 0;\n\n if (charstrings) {\n for (let code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n const position = getUnicodeRangeFor(code);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << (position - 32);\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << (position - 64);\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << (position - 96);\n } else {\n throw new FormatError(\n \"Unicode ranges Bits > 123 are reserved for internal usage\"\n );\n }\n }\n if (lastCharIndex > 0xffff) {\n // OS2 only supports a 16 bit int. The spec says if supplementary\n // characters are used the field should just be set to 0xFFFF.\n lastCharIndex = 0xffff;\n }\n } else {\n // TODO\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n const bbox = properties.bbox || [0, 0, 0, 0];\n const unitsPerEm =\n override.unitsPerEm ||\n 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n // if the font units differ to the PDF glyph space units\n // then scale up the values\n const scale = properties.ascentScaled\n ? 1.0\n : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n\n const typoAscent =\n override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n let typoDescent =\n override.descent || Math.round(scale * (properties.descent || bbox[1]));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent; // fixing incorrect descent\n }\n const winAscent = override.yMax || typoAscent;\n const winDescent = -override.yMin || -typoDescent;\n\n return (\n \"\\x00\\x03\" + // version\n \"\\x02\\x24\" + // xAvgCharWidth\n \"\\x01\\xF4\" + // usWeightClass\n \"\\x00\\x05\" + // usWidthClass\n \"\\x00\\x00\" + // fstype (0 to let the font loads via font-face on IE)\n \"\\x02\\x8A\" + // ySubscriptXSize\n \"\\x02\\xBB\" + // ySubscriptYSize\n \"\\x00\\x00\" + // ySubscriptXOffset\n \"\\x00\\x8C\" + // ySubscriptYOffset\n \"\\x02\\x8A\" + // ySuperScriptXSize\n \"\\x02\\xBB\" + // ySuperScriptYSize\n \"\\x00\\x00\" + // ySuperScriptXOffset\n \"\\x01\\xDF\" + // ySuperScriptYOffset\n \"\\x00\\x31\" + // yStrikeOutSize\n \"\\x01\\x02\" + // yStrikeOutPosition\n \"\\x00\\x00\" + // sFamilyClass\n \"\\x00\\x00\\x06\" +\n String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n \"\\x00\\x00\\x00\\x00\\x00\\x00\" + // Panose\n string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n \"\\x2A\\x32\\x31\\x2A\" + // achVendID\n string16(properties.italicAngle ? 1 : 0) + // fsSelection\n string16(firstCharIndex || properties.firstChar) + // usFirstCharIndex\n string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n string16(typoAscent) + // sTypoAscender\n string16(typoDescent) + // sTypoDescender\n \"\\x00\\x64\" + // sTypoLineGap (7%-10% of the unitsPerEM value)\n string16(winAscent) + // usWinAscent\n string16(winDescent) + // usWinDescent\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange1 (Bits 0-31)\n \"\\x00\\x00\\x00\\x00\" + // ulCodePageRange2 (Bits 32-63)\n string16(properties.xHeight) + // sxHeight\n string16(properties.capHeight) + // sCapHeight\n string16(0) + // usDefaultChar\n string16(firstCharIndex || properties.firstChar) + // usBreakChar\n \"\\x00\\x03\"\n ); // usMaxContext\n}\n\nfunction createPostTable(properties) {\n const angle = Math.floor(properties.italicAngle * 2 ** 16);\n return (\n \"\\x00\\x03\\x00\\x00\" + // Version number\n string32(angle) + // italicAngle\n \"\\x00\\x00\" + // underlinePosition\n \"\\x00\\x00\" + // underlineThickness\n string32(properties.fixedPitch ? 1 : 0) + // isFixedPitch\n \"\\x00\\x00\\x00\\x00\" + // minMemType42\n \"\\x00\\x00\\x00\\x00\" + // maxMemType42\n \"\\x00\\x00\\x00\\x00\" + // minMemType1\n \"\\x00\\x00\\x00\\x00\"\n ); // maxMemType1\n}\n\nfunction createPostscriptName(name) {\n // See https://docs.microsoft.com/en-us/typography/opentype/spec/recom#name.\n return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n const strings = [\n proto[0][0] || \"Original licence\", // 0.Copyright\n proto[0][1] || name, // 1.Font family\n proto[0][2] || \"Unknown\", // 2.Font subfamily (font weight)\n proto[0][3] || \"uniqueID\", // 3.Unique ID\n proto[0][4] || name, // 4.Full font name\n proto[0][5] || \"Version 0.11\", // 5.Version\n proto[0][6] || createPostscriptName(name), // 6.Postscript name\n proto[0][7] || \"Unknown\", // 7.Trademark\n proto[0][8] || \"Unknown\", // 8.Manufacturer\n proto[0][9] || \"Unknown\", // 9.Designer\n ];\n\n // Mac want 1-byte per character strings while Windows want\n // 2-bytes per character, so duplicate the names table\n const stringsUnicode = [];\n let i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n const strBufUnicode = [];\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n stringsUnicode.push(strBufUnicode.join(\"\"));\n }\n\n const names = [strings, stringsUnicode];\n const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n\n const namesRecordCount = strings.length * platforms.length;\n let nameTable =\n \"\\x00\\x00\" + // format\n string16(namesRecordCount) + // Number of names Record\n string16(namesRecordCount * 12 + 6); // Storage\n\n // Build the name records field\n let strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n const strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n const nameRecord =\n platforms[i] + // platform ID\n encodings[i] + // encoding ID\n languages[i] + // language ID\n string16(j) + // name ID\n string16(str.length) +\n string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n return nameTable;\n}\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n */\nclass Font {\n constructor(name, file, properties) {\n this.name = name;\n this.psName = null;\n this.mimetype = null;\n this.disableFontFace = false;\n\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.missingFile = false;\n this.cssFontInfo = properties.cssFontInfo;\n\n this._charsCache = Object.create(null);\n this._glyphCache = Object.create(null);\n\n let isSerifFont = !!(properties.flags & FontFlags.Serif);\n // Fallback to checking the font name, in order to improve text-selection,\n // since the /Flags-entry is often wrong (fixes issue13845.pdf).\n if (!isSerifFont && !properties.isSimulatedFlags) {\n const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n serifFonts = getSerifFonts();\n for (const namePart of baseName.split(\"+\")) {\n if (serifFonts[namePart]) {\n isSerifFont = true;\n break;\n }\n }\n }\n this.isSerifFont = isSerifFont;\n\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n let { type, subtype } = properties;\n this.type = type;\n this.subtype = subtype;\n\n const matches = name.match(/^InvalidPDFjsFont_(.*)_\\d+$/);\n this.isInvalidPDFjsFont = !!matches;\n if (this.isInvalidPDFjsFont) {\n this.fallbackName = matches[1];\n } else if (this.isMonospace) {\n this.fallbackName = \"monospace\";\n } else if (this.isSerifFont) {\n this.fallbackName = \"serif\";\n } else {\n this.fallbackName = \"sans-serif\";\n }\n\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.cMap = properties.cMap;\n this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.lineHeight = this.ascent - this.descent;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n this.toFontChar = [];\n\n if (properties.type === \"Type3\") {\n for (let charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] =\n this.differences[charCode] || properties.defaultEncoding[charCode];\n }\n return;\n }\n\n this.cidEncoding = properties.cidEncoding || \"\";\n this.vertical = !!properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n // Some bad PDF generators will include empty font files,\n // attempting to recover by assuming that no file exists.\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n }\n this.fallbackToSystemFont(properties);\n return;\n }\n\n // Parse the font file to determine the correct type/subtype, rather than\n // relying on the (often incorrect) data in the font dictionary; (see e.g.\n // issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n [type, subtype] = getFontFileType(file, properties);\n\n if (type !== this.type || subtype !== this.subtype) {\n info(\n \"Inconsistent font file Type/SubType, expected: \" +\n `${this.type}/${this.subtype} but found: ${type}/${subtype}.`\n );\n }\n\n let data;\n try {\n switch (type) {\n case \"MMType1\":\n info(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n /* falls through */\n case \"Type1\":\n case \"CIDFontType0\":\n this.mimetype = \"font/opentype\";\n\n const cff =\n subtype === \"Type1C\" || subtype === \"CIDFontType0C\"\n ? new CFFFont(file, properties)\n : new Type1Font(name, file, properties);\n\n adjustWidths(properties);\n\n // Wrap the CFF data inside an OTF font file\n data = this.convert(name, cff, properties);\n break;\n\n case \"OpenType\":\n case \"TrueType\":\n case \"CIDFontType2\":\n this.mimetype = \"font/opentype\";\n\n // Repair the TrueType file. It is can be damaged in the point of\n // view of the sanitizer\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n\n type = \"OpenType\";\n }\n break;\n\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n warn(e);\n this.fallbackToSystemFont(properties);\n return;\n }\n\n amendFallbackToUnicode(properties);\n this.data = data;\n\n // Transfer some properties again that could change during font conversion\n this.type = type;\n this.subtype = subtype;\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.seacMap = properties.seacMap;\n }\n\n get renderer() {\n const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, \"renderer\", renderer);\n }\n\n exportData(extraProperties = false) {\n const exportDataProperties = extraProperties\n ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\n : EXPORT_DATA_PROPERTIES;\n\n const data = Object.create(null);\n let property, value;\n for (property of exportDataProperties) {\n value = this[property];\n // Ignore properties that haven't been explicitly set.\n if (value !== undefined) {\n data[property] = value;\n }\n }\n return data;\n }\n\n fallbackToSystemFont(properties) {\n this.missingFile = true;\n // The file data is not specified. Trying to fix the font name\n // to be used with the canvas.font.\n const { name, type } = this;\n let fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap(),\n nonStdFontMap = getNonStdFontMap();\n const isStandardFont = !!stdFontMap[fontName];\n const isMappedToStandardFont = !!(\n nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\n );\n\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n const fontBasicMetricsMap = getFontBasicMetrics();\n const metrics = fontBasicMetricsMap[fontName];\n if (metrics) {\n if (isNaN(this.ascent)) {\n this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.descent)) {\n this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n }\n if (isNaN(this.capHeight)) {\n this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n }\n }\n\n this.bold = /bold/gi.test(fontName);\n this.italic = /oblique|italic/gi.test(fontName);\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialBlack for example will be replaced by Helvetica.\n this.black = /Black/g.test(name);\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialNarrow for example will be replaced by Helvetica.\n const isNarrow = /Narrow/g.test(name);\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure =\n (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n if (\n (isStandardFont || isMappedToStandardFont) &&\n type === \"CIDFontType2\" &&\n this.cidEncoding.startsWith(\"Identity-\")\n ) {\n const cidToGidMap = properties.cidToGidMap;\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n const map = [];\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n\n if (/Arial-?Black/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\n } else if (/Calibri/i.test(name)) {\n applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\n }\n\n // Always update the glyph mapping with the `cidToGidMap` when it exists\n // (fixes issue12418_reduced.pdf).\n if (cidToGidMap) {\n for (const charCode in map) {\n const cid = map[charCode];\n if (cidToGidMap[cid] !== undefined) {\n map[+charCode] = cidToGidMap[cid];\n }\n }\n // When the /CIDToGIDMap is \"incomplete\", fallback to the included\n // /ToUnicode-map regardless of its encoding (fixes issue11915.pdf).\n if (\n cidToGidMap.length !== this.toUnicode.length &&\n properties.hasIncludedToUnicodeMap &&\n this.toUnicode instanceof IdentityToUnicodeMap\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n const cid = map[charCode];\n if (cidToGidMap[cid] === undefined) {\n map[+charCode] = unicodeCharCode;\n }\n });\n }\n }\n\n if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(\n SymbolSetEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n warn(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n }\n this.toFontChar = buildToFontChar(\n ZapfDingbatsEncoding,\n getDingbatsGlyphsUnicode(),\n this.differences\n );\n } else if (isStandardFont) {\n const map = buildToFontChar(\n this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences\n );\n\n if (\n type === \"CIDFontType2\" &&\n !this.cidEncoding.startsWith(\"Identity-\") &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n } else {\n const glyphsUnicodeMap = getGlyphsUnicode();\n const map = [];\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n const glyphName =\n this.differences[charCode] || this.defaultEncoding[charCode];\n const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n map[+charCode] = unicodeCharCode;\n });\n\n // Attempt to improve the glyph mapping for (some) composite fonts that\n // appear to lack meaningful ToUnicode data.\n if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\n if (/Tahoma|Verdana/i.test(name)) {\n // Fixes issue15719.pdf and issue11242_reduced.pdf.\n applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\n }\n }\n this.toFontChar = map;\n }\n\n amendFallbackToUnicode(properties);\n this.loadedName = fontName.split(\"-\")[0];\n }\n\n checkAndRepair(name, font, properties) {\n const VALID_TABLES = [\n \"OS/2\",\n \"cmap\",\n \"head\",\n \"hhea\",\n \"hmtx\",\n \"maxp\",\n \"name\",\n \"post\",\n \"loca\",\n \"glyf\",\n \"fpgm\",\n \"prep\",\n \"cvt \",\n \"CFF \",\n ];\n\n function readTables(file, numTables) {\n const tables = Object.create(null);\n tables[\"OS/2\"] = null;\n tables.cmap = null;\n tables.head = null;\n tables.hhea = null;\n tables.hmtx = null;\n tables.maxp = null;\n tables.name = null;\n tables.post = null;\n\n for (let i = 0; i < numTables; i++) {\n const table = readTableEntry(file);\n if (!VALID_TABLES.includes(table.tag)) {\n continue; // skipping table if it's not a required or optional table\n }\n if (table.length === 0) {\n continue; // skipping empty tables\n }\n tables[table.tag] = table;\n }\n return tables;\n }\n\n function readTableEntry(file) {\n const tag = file.getString(4);\n\n const checksum = file.getInt32() >>> 0;\n const offset = file.getInt32() >>> 0;\n const length = file.getInt32() >>> 0;\n\n // Read the table associated data\n const previousPosition = file.pos;\n file.pos = file.start || 0;\n file.skip(offset);\n const data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === \"head\") {\n // clearing checksum adjustment\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20; // Set font optimized for cleartype flag.\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: ttf.getString(4),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16(),\n };\n }\n\n function readTrueTypeCollectionHeader(ttc) {\n const ttcTag = ttc.getString(4);\n assert(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n\n const majorVersion = ttc.getUint16();\n const minorVersion = ttc.getUint16();\n const numFonts = ttc.getInt32() >>> 0;\n const offsetTable = [];\n for (let i = 0; i < numFonts; i++) {\n offsetTable.push(ttc.getInt32() >>> 0);\n }\n\n const header = {\n ttcTag,\n majorVersion,\n minorVersion,\n numFonts,\n offsetTable,\n };\n switch (majorVersion) {\n case 1:\n return header;\n case 2:\n header.dsigTag = ttc.getInt32() >>> 0;\n header.dsigLength = ttc.getInt32() >>> 0;\n header.dsigOffset = ttc.getInt32() >>> 0;\n return header;\n }\n throw new FormatError(\n `Invalid TrueType Collection majorVersion: ${majorVersion}.`\n );\n }\n\n function readTrueTypeCollectionData(ttc, fontName) {\n const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\n const fontNameParts = fontName.split(\"+\");\n let fallbackData;\n\n for (let i = 0; i < numFonts; i++) {\n ttc.pos = (ttc.start || 0) + offsetTable[i];\n const potentialHeader = readOpenTypeHeader(ttc);\n const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n if (!potentialTables.name) {\n throw new FormatError(\n 'TrueType Collection font must contain a \"name\" table.'\n );\n }\n const [nameTable] = readNameTable(potentialTables.name);\n\n for (let j = 0, jj = nameTable.length; j < jj; j++) {\n for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n const nameEntry =\n nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n if (!nameEntry) {\n continue;\n }\n if (nameEntry === fontName) {\n return {\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n if (fontNameParts.length < 2) {\n continue;\n }\n for (const part of fontNameParts) {\n if (nameEntry === part) {\n fallbackData = {\n name: part,\n header: potentialHeader,\n tables: potentialTables,\n };\n }\n }\n }\n }\n }\n if (fallbackData) {\n warn(\n `TrueType Collection does not contain \"${fontName}\" font, ` +\n `falling back to \"${fallbackData.name}\" font instead.`\n );\n return {\n header: fallbackData.header,\n tables: fallbackData.tables,\n };\n }\n throw new FormatError(\n `TrueType Collection does not contain \"${fontName}\" font.`\n );\n }\n\n /**\n * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n * PDF spec\n */\n function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn(\"No cmap table available.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n let segment;\n let start = (file.start || 0) + cmap.offset;\n file.pos = start;\n\n file.skip(2); // version\n const numTables = file.getUint16();\n\n let potentialTable;\n let canBreak = false;\n // There's an order of preference in terms of which cmap subtable to\n // use:\n // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n // The following takes advantage of the fact that the tables are sorted\n // to work.\n for (let i = 0; i < numTables; i++) {\n const platformId = file.getUint16();\n const encodingId = file.getUint16();\n const offset = file.getInt32() >>> 0;\n let useTable = false;\n\n // Sometimes there are multiple of the same type of table. Default\n // to choosing the first table and skip the rest.\n if (\n potentialTable &&\n potentialTable.platformId === platformId &&\n potentialTable.encodingId === encodingId\n ) {\n continue;\n }\n\n if (\n platformId === 0 &&\n (encodingId === /* Unicode Default */ 0 ||\n encodingId === /* Unicode 1.1 */ 1 ||\n encodingId === /* Unicode BMP */ 3)\n ) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (\n platformId === 3 &&\n encodingId === 1 &&\n (hasEncoding || !potentialTable)\n ) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n\n let correctlySorted = true;\n if (i < numTables - 1) {\n const nextBytes = file.peekBytes(2),\n nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n if (nextPlatformId < platformId) {\n correctlySorted = false;\n }\n }\n if (correctlySorted) {\n canBreak = true;\n }\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset,\n };\n }\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n file.pos = start + potentialTable.offset;\n }\n if (!potentialTable || file.peekByte() === -1) {\n warn(\"Could not find a preferred cmap table.\");\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n const format = file.getUint16();\n let hasShortCmap = false;\n const mappings = [];\n let j, glyphId;\n\n // TODO(mack): refactor this cmap subtable reading logic out\n if (format === 0) {\n file.skip(2 + 2); // length + language\n\n for (j = 0; j < 256; j++) {\n const index = file.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index,\n });\n }\n hasShortCmap = true;\n } else if (format === 2) {\n file.skip(2 + 2); // length + language\n\n const subHeaderKeys = [];\n let maxSubHeaderKey = 0;\n // Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\n // single-byte character. Otherwise, i is the first byte of a\n // multi-byte character, and the value is 8*index into\n // subHeaders.\n for (let i = 0; i < 256; i++) {\n const subHeaderKey = file.getUint16() >> 3;\n subHeaderKeys.push(subHeaderKey);\n maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n }\n // Read subHeaders. The number of entries is determined\n // dynamically based on the subHeaderKeys found above.\n const subHeaders = [];\n for (let i = 0; i <= maxSubHeaderKey; i++) {\n subHeaders.push({\n firstCode: file.getUint16(),\n entryCount: file.getUint16(),\n idDelta: signedInt16(file.getByte(), file.getByte()),\n idRangePos: file.pos + file.getUint16(),\n });\n }\n for (let i = 0; i < 256; i++) {\n if (subHeaderKeys[i] === 0) {\n // i is a single-byte code.\n file.pos = subHeaders[0].idRangePos + 2 * i;\n glyphId = file.getUint16();\n mappings.push({\n charCode: i,\n glyphId,\n });\n } else {\n // i is the first byte of a two-byte code.\n const s = subHeaders[subHeaderKeys[i]];\n for (j = 0; j < s.entryCount; j++) {\n const charCode = (i << 8) + j + s.firstCode;\n file.pos = s.idRangePos + 2 * j;\n glyphId = file.getUint16();\n if (glyphId !== 0) {\n glyphId = (glyphId + s.idDelta) % 65536;\n }\n mappings.push({\n charCode,\n glyphId,\n });\n }\n }\n }\n } else if (format === 4) {\n file.skip(2 + 2); // length + language\n\n // re-creating the table in format 4 since the encoding\n // might be changed\n const segCount = file.getUint16() >> 1;\n file.skip(6); // skipping range fields\n const segments = [];\n let segIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({ end: file.getUint16() });\n }\n file.skip(2);\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = file.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = file.getUint16();\n }\n\n let offsetsCount = 0,\n offsetIndex;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n const rangeOffset = file.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(\n offsetsCount,\n offsetIndex + segment.end - segment.start + 1\n );\n }\n\n const offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(file.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n const end = segment.end;\n const delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xffff) {\n continue;\n }\n\n glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n glyphId = (glyphId + delta) & 0xffff;\n mappings.push({\n charCode: j,\n glyphId,\n });\n }\n }\n } else if (format === 6) {\n file.skip(2 + 2); // length + language\n\n // Format 6 is a 2-bytes dense mapping, which means the font data\n // lives glue together even if they are pretty far in the unicode\n // table. (This looks weird, so I can have missed something), this\n // works on Linux but seems to fails on Mac so let's rewrite the\n // cmap table to a 3-1-4 style\n const firstCode = file.getUint16();\n const entryCount = file.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = file.getUint16();\n const charCode = firstCode + j;\n\n mappings.push({\n charCode,\n glyphId,\n });\n }\n } else if (format === 12) {\n file.skip(2 + 4 + 4); // reserved + length + language\n\n const nGroups = file.getInt32() >>> 0;\n for (j = 0; j < nGroups; j++) {\n const startCharCode = file.getInt32() >>> 0;\n const endCharCode = file.getInt32() >>> 0;\n let glyphCode = file.getInt32() >>> 0;\n\n for (\n let charCode = startCharCode;\n charCode <= endCharCode;\n charCode++\n ) {\n mappings.push({\n charCode,\n glyphId: glyphCode++,\n });\n }\n }\n } else {\n warn(\"cmap table has unsupported format: \" + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n // removing duplicate entries\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n for (let i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap,\n };\n }\n\n function sanitizeMetrics(\n file,\n header,\n metrics,\n headTable,\n numGlyphs,\n dupFirstEntry\n ) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n\n file.pos = (file.start || 0) + header.offset;\n file.pos += 4; // version\n file.pos += 2; // ascent\n file.pos += 2; // descent\n file.pos += 2; // linegap\n file.pos += 2; // adv_width_max\n file.pos += 2; // min_sb1\n file.pos += 2; // min_sb2\n file.pos += 2; // max_extent\n file.pos += 2; // caret_slope_rise\n file.pos += 2; // caret_slope_run\n const caretOffset = file.getUint16();\n file.pos += 8; // reserved\n file.pos += 2; // format\n let numOfMetrics = file.getUint16();\n\n if (caretOffset !== 0) {\n const macStyle = int16(headTable.data[44], headTable.data[45]);\n if (!(macStyle & 2)) {\n // Suppress OTS warnings about the `caretOffset` in the hhea-table.\n header.data[22] = 0;\n header.data[23] = 0;\n }\n }\n\n if (numOfMetrics > numGlyphs) {\n info(\n `The numOfMetrics (${numOfMetrics}) should not be ` +\n `greater than the numGlyphs (${numGlyphs}).`\n );\n // Reduce numOfMetrics if it is greater than numGlyphs\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n const numOfSidebearings = numGlyphs - numOfMetrics;\n const numMissing =\n numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\n\n if (numMissing > 0) {\n // For each missing glyph, we set both the width and lsb to 0 (zero).\n // Since we need to add two properties for each glyph, this explains\n // the use of |numMissing * 2| when initializing the typed array.\n const entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n if (dupFirstEntry) {\n // Set the sidebearing value of the duplicated glyph.\n entries[metrics.length] = metrics.data[2];\n entries[metrics.length + 1] = metrics.data[3];\n }\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(\n source,\n sourceStart,\n sourceEnd,\n dest,\n destStart,\n hintsValid\n ) {\n const glyphProfile = {\n length: 0,\n sizeOfInstructions: 0,\n };\n if (sourceEnd - sourceStart <= 12) {\n // glyph with data less than 12 is invalid one\n return glyphProfile;\n }\n const glyf = source.subarray(sourceStart, sourceEnd);\n let contoursCount = signedInt16(glyf[0], glyf[1]);\n if (contoursCount < 0) {\n // OTS doesn't like contour count to be less than -1.\n contoursCount = -1;\n writeSignedInt16(glyf, 0, contoursCount);\n // complex glyph, writing as is\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n let i,\n j = 10,\n flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n const endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n const instructionsStart = j;\n const instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n glyphProfile.sizeOfInstructions = instructionsLength;\n j += 2 + instructionsLength;\n const instructionsEnd = j;\n // validating flags\n let coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n const flag = glyf[j++];\n if (flag & 0xc0) {\n // reserved flags must be zero, cleaning up\n glyf[j - 1] = flag & 0x3f;\n }\n let xLength = 2;\n if (flag & 2) {\n xLength = 1;\n } else if (flag & 16) {\n xLength = 0;\n }\n let yLength = 2;\n if (flag & 4) {\n yLength = 1;\n } else if (flag & 32) {\n yLength = 0;\n }\n const xyLength = xLength + yLength;\n coordinatesLength += xyLength;\n if (flag & 8) {\n const repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n // glyph without coordinates will be rejected\n if (coordinatesLength === 0) {\n return glyphProfile;\n }\n let glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n // not enough data for coordinates\n return glyphProfile;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(\n glyf.subarray(instructionsEnd, glyphDataLength),\n destStart + instructionsStart + 2\n );\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = (glyphDataLength + 3) & ~3;\n }\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n if (glyf.length - glyphDataLength > 3) {\n // truncating and aligning to 4 bytes the long glyph data\n glyphDataLength = (glyphDataLength + 3) & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n glyphProfile.length = glyphDataLength;\n return glyphProfile;\n }\n // glyph data is fine\n dest.set(glyf, destStart);\n glyphProfile.length = glyf.length;\n return glyphProfile;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n const data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n const version = int32(data[0], data[1], data[2], data[3]);\n if (version >> 16 !== 1) {\n info(\"Attempting to fix invalid version in head table: \" + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n const indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info(\n \"Attempting to fix invalid indexToLocFormat in head table: \" +\n indexToLocFormat\n );\n\n // The value of indexToLocFormat should be 0 if the loca table\n // consists of short offsets, and should be 1 if the loca table\n // consists of long offsets.\n //\n // The number of entries in the loca table should be numGlyphs + 1.\n //\n // Using this information, we can work backwards to deduce if the\n // size of each offset in the loca table, and thus figure out the\n // appropriate value for indexToLocFormat.\n\n const numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n // 0x0000 indicates the loca table consists of short offsets\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n // 0x0001 indicates the loca table consists of long offsets\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError(\n \"Could not fix indexToLocFormat: \" + indexToLocFormat\n );\n }\n }\n }\n\n function sanitizeGlyphLocations(\n loca,\n glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n ) {\n let itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (\n (data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]\n );\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = (value >>> 24) & 0xff;\n data[offset + 1] = (value >> 16) & 0xff;\n data[offset + 2] = (value >> 8) & 0xff;\n data[offset + 3] = value & 0xff;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = (value >> 9) & 0xff;\n data[offset + 1] = (value >> 1) & 0xff;\n };\n }\n // The first glyph is duplicated.\n const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n const locaDataSize = itemSize * (1 + numGlyphsOut);\n // Resize loca table to account for duplicated glyph.\n const locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n // removing the invalid glyphs\n const oldGlyfData = glyf.data;\n const oldGlyfDataLength = oldGlyfData.length;\n const newGlyfData = new Uint8Array(oldGlyfDataLength);\n\n // The spec says the offsets should be in ascending order, however\n // this is not true for some fonts or they use the offset of 0 to mark a\n // glyph as missing. OTS requires the offsets to be in order and not to\n // be zero, so we must sort and rebuild the loca table and potentially\n // re-arrange the glyf data.\n let i, j;\n const locaEntries = [];\n // There are numGlyphs + 1 loca table entries.\n for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n let offset = itemDecode(locaData, j);\n if (offset > oldGlyfDataLength) {\n offset = oldGlyfDataLength;\n }\n locaEntries.push({\n index: i,\n offset,\n endOffset: 0,\n });\n }\n locaEntries.sort((a, b) => {\n return a.offset - b.offset;\n });\n // Now the offsets are sorted, calculate the end offset of each glyph.\n // The last loca entry's endOffset is not calculated since it's the end\n // of the data and will be stored on the previous entry's endOffset.\n for (i = 0; i < numGlyphs; i++) {\n locaEntries[i].endOffset = locaEntries[i + 1].offset;\n }\n // Re-sort so glyphs aren't out of order.\n locaEntries.sort((a, b) => {\n return a.index - b.index;\n });\n // Calculate the endOffset of the \"first\" glyph correctly when there are\n // *multiple* empty ones at the start of the data (fixes issue14618.pdf).\n for (i = 0; i < numGlyphs; i++) {\n const { offset, endOffset } = locaEntries[i];\n if (offset !== 0 || endOffset !== 0) {\n break;\n }\n const nextOffset = locaEntries[i + 1].offset;\n if (nextOffset === 0) {\n continue;\n }\n locaEntries[i].endOffset = nextOffset;\n break;\n }\n\n const missingGlyphs = Object.create(null);\n let writeOffset = 0;\n itemEncode(locaData, 0, writeOffset);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n const glyphProfile = sanitizeGlyph(\n oldGlyfData,\n locaEntries[i].offset,\n locaEntries[i].endOffset,\n newGlyfData,\n writeOffset,\n hintsValid\n );\n const newLength = glyphProfile.length;\n if (newLength === 0) {\n missingGlyphs[i] = true;\n }\n if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n }\n\n if (writeOffset === 0) {\n // glyf table cannot be empty -- redoing the glyf and loca tables\n // to have single glyph with one point\n const simpleGlyph = new Uint8Array([\n 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\n ]);\n for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n } else if (dupFirstEntry) {\n // Browsers will not display a glyph at position 0. Typically glyph 0\n // is notdef, but a number of fonts put a valid glyph there so it must\n // be duplicated and appended.\n const firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(\n loca.data,\n locaData.length - itemSize,\n writeOffset + firstEntryLength\n );\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return {\n missingGlyphs,\n maxSizeOfInstructions,\n };\n }\n\n function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n const start = (font.start || 0) + post.offset;\n font.pos = start;\n\n const length = post.length,\n end = start + length;\n const version = font.getInt32();\n // skip rest to the tables\n font.skip(28);\n\n let glyphNames;\n let valid = true;\n let i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n const numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n const glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n const index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n const customNames = [],\n strBuf = [];\n while (font.pos < end) {\n const stringLength = font.getByte();\n strBuf.length = stringLength;\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n customNames.push(strBuf.join(\"\"));\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n const j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn(\"Unknown/unsupported post table version \" + version);\n valid = false;\n if (propertiesObj.defaultEncoding) {\n glyphNames = propertiesObj.defaultEncoding;\n }\n break;\n }\n propertiesObj.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n const start = (font.start || 0) + nameTable.offset;\n font.pos = start;\n\n const names = [[], []],\n records = [];\n const length = nameTable.length,\n end = start + length;\n const format = font.getUint16();\n const FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n // unsupported name table format or table \"too\" small\n return [names, records];\n }\n const numRecords = font.getUint16();\n const stringsStart = font.getUint16();\n const NAME_RECORD_LENGTH = 12;\n let i, ii;\n\n for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n const r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16(),\n };\n // using only Macintosh and Windows platform/encoding names\n if (isMacNameRecord(r) || isWinNameRecord(r)) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n const record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n const pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n const nameIndex = record.name;\n if (record.encoding) {\n // unicode\n let str = \"\";\n for (let j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = font.getString(record.length);\n }\n }\n return [names, records];\n }\n\n // prettier-ignore\n const TTOpsStackDeltas = [\n 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n // 0xC0-DF == -1 and 0xE0-FF == -2\n\n function sanitizeTTProgram(table, ttContext) {\n let data = table.data;\n let i = 0,\n j,\n n,\n b,\n funcId,\n pc,\n lastEndf = 0,\n lastDeff = 0;\n const stack = [];\n const callstack = [];\n const functionsCalled = [];\n let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n let inFDEF = false,\n ifLevel = 0,\n inELSE = 0;\n for (let ii = data.length; i < ii; ) {\n const op = data[i++];\n // The TrueType instruction set docs can be found at\n // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n if (op === 0x40) {\n // NPUSHB - pushes n bytes\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) {\n // NPUSHW - pushes n words\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb0) {\n // PUSHB - pushes bytes\n n = op - 0xb0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xf8) === 0xb8) {\n // PUSHW - pushes words\n n = op - 0xb8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n // CALL\n if (!inFDEF && !inELSE) {\n // collecting information about which functions are used\n funcId = stack.at(-1);\n if (isNaN(funcId)) {\n info(\"TT: CALL empty stack (or invalid entry).\");\n } else {\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n const newStackLength =\n stack.length + ttContext.functionsStackDeltas[funcId];\n if (newStackLength < 0) {\n warn(\"TT: CALL invalid functions stack delta.\");\n ttContext.hintsValid = false;\n return;\n }\n stack.length = newStackLength;\n } else if (\n funcId in ttContext.functionsDefined &&\n !functionsCalled.includes(funcId)\n ) {\n callstack.push({ data, i, stackTop: stack.length - 1 });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn(\"TT: CALL non-existent function\");\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n }\n } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n // FDEF\n if (inFDEF || inELSE) {\n warn(\"TT: nested FDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // collecting information about which functions are defined\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = { data, i };\n } else if (op === 0x2d) {\n // ENDF - end of function\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn(\"TT: ENDF bad stack\");\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n }\n } else if (op === 0x89) {\n // IDEF - instruction definition\n if (inFDEF || inELSE) {\n warn(\"TT: nested IDEFs not allowed\");\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // recording it as a function to track ENDF\n lastDeff = i;\n } else if (op === 0x58) {\n // IF\n ++ifLevel;\n } else if (op === 0x1b) {\n // ELSE\n inELSE = ifLevel;\n } else if (op === 0x59) {\n // EIF\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1c) {\n // JMPR\n if (!inFDEF && !inELSE) {\n const offset = stack.at(-1);\n // only jumping forward to prevent infinite loop\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n // Adjusting stack not extactly, but just enough to get function id\n if (!inFDEF && !inELSE) {\n let stackDelta = 0;\n if (op <= 0x8e) {\n stackDelta = TTOpsStackDeltas[op];\n } else if (op >= 0xc0 && op <= 0xdf) {\n stackDelta = -1;\n } else if (op >= 0xe0) {\n stackDelta = -2;\n }\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN); // pushing any number into stack\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n const content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn(\"TT: complementing a missing function tail\");\n // new function definition started, but not finished\n // complete function by [CLEAR, ENDF]\n content.push(new Uint8Array([0x22, 0x2d]));\n }\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn(\"TT: more functions defined than expected\");\n ttContext.hintsValid = false;\n return;\n }\n for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn(\"TT: invalid function id: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn(\"TT: undefined function: \" + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n // concatenating the content items\n let newLength = 0;\n let j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n const result = new Uint8Array(newLength);\n let pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n const ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true,\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && cvt.length & 1) {\n const cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n\n // The following steps modify the original font data, making copy\n font = new Stream(new Uint8Array(font.getBytes()));\n\n let header, tables;\n if (isTrueTypeCollectionFile(font)) {\n const ttcData = readTrueTypeCollectionData(font, this.name);\n header = ttcData.header;\n tables = ttcData.tables;\n } else {\n header = readOpenTypeHeader(font);\n tables = readTables(font, header.numTables);\n }\n let cff, cffFile;\n\n const isTrueType = !tables[\"CFF \"];\n if (!isTrueType) {\n const isComposite =\n properties.composite &&\n ((properties.cidToGidMap || []).length > 0 ||\n !(properties.cMap instanceof IdentityCMap));\n // OpenType font (skip composite fonts with non-default glyph mapping).\n if (\n (header.version === \"OTTO\" && !isComposite) ||\n !tables.head ||\n !tables.hhea ||\n !tables.maxp ||\n !tables.post\n ) {\n // No major tables: throwing everything at `CFFFont`.\n cffFile = new Stream(tables[\"CFF \"].data);\n cff = new CFFFont(cffFile, properties);\n\n adjustWidths(properties);\n\n return this.convert(name, cff, properties);\n }\n\n delete tables.glyf;\n delete tables.loca;\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n this.isOpenType = true;\n } else {\n if (!tables.loca) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables.glyf) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n tables.glyf = {\n tag: \"glyf\",\n data: new Uint8Array(0),\n };\n }\n this.isOpenType = false;\n }\n\n if (!tables.maxp) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables.maxp.offset;\n const version = font.getInt32();\n const numGlyphs = font.getUint16();\n\n if (\n properties.scaleFactors &&\n properties.scaleFactors.length === numGlyphs &&\n isTrueType\n ) {\n const { scaleFactors } = properties;\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n\n const glyphs = new GlyfTable({\n glyfTable: tables.glyf.data,\n isGlyphLocationsLong,\n locaTable: tables.loca.data,\n numGlyphs,\n });\n glyphs.scale(scaleFactors);\n\n const { glyf, loca, isLocationLong } = glyphs.write();\n tables.glyf.data = glyf;\n tables.loca.data = loca;\n\n if (isLocationLong !== !!isGlyphLocationsLong) {\n tables.head.data[50] = 0;\n tables.head.data[51] = isLocationLong ? 1 : 0;\n }\n\n const metrics = tables.hmtx.data;\n\n for (let i = 0; i < numGlyphs; i++) {\n const j = 4 * i;\n const advanceWidth = Math.round(\n scaleFactors[i] * int16(metrics[j], metrics[j + 1])\n );\n metrics[j] = (advanceWidth >> 8) & 0xff;\n metrics[j + 1] = advanceWidth & 0xff;\n const lsb = Math.round(\n scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\n );\n writeSignedInt16(metrics, j + 2, lsb);\n }\n }\n\n // Glyph 0 is duplicated and appended.\n let numGlyphsOut = numGlyphs + 1;\n let dupFirstEntry = true;\n if (numGlyphsOut > 0xffff) {\n dupFirstEntry = false;\n numGlyphsOut = numGlyphs;\n warn(\"Not enough space in glyfs to duplicate first glyph.\");\n }\n let maxFunctionDefs = 0;\n let maxSizeOfInstructions = 0;\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n const maxZones = font.getUint16();\n if (maxZones > 2) {\n // reset to 2 if font has invalid maxZones\n tables.maxp.data[14] = 0;\n tables.maxp.data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n font.pos += 4;\n maxSizeOfInstructions = font.getUint16();\n }\n\n tables.maxp.data[4] = numGlyphsOut >> 8;\n tables.maxp.data[5] = numGlyphsOut & 255;\n\n const hintsValid = sanitizeTTPrograms(\n tables.fpgm,\n tables.prep,\n tables[\"cvt \"],\n maxFunctionDefs\n );\n if (!hintsValid) {\n delete tables.fpgm;\n delete tables.prep;\n delete tables[\"cvt \"];\n }\n\n // Ensure the hmtx table contains the advance width and\n // sidebearings information for numGlyphs in the maxp table\n sanitizeMetrics(\n font,\n tables.hhea,\n tables.hmtx,\n tables.head,\n numGlyphsOut,\n dupFirstEntry\n );\n\n if (!tables.head) {\n throw new FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n\n let missingGlyphs = Object.create(null);\n if (isTrueType) {\n const isGlyphLocationsLong = int16(\n tables.head.data[50],\n tables.head.data[51]\n );\n const glyphsInfo = sanitizeGlyphLocations(\n tables.loca,\n tables.glyf,\n numGlyphs,\n isGlyphLocationsLong,\n hintsValid,\n dupFirstEntry,\n maxSizeOfInstructions\n );\n missingGlyphs = glyphsInfo.missingGlyphs;\n\n // Some fonts have incorrect maxSizeOfInstructions values, so we use\n // the computed value instead.\n if (version >= 0x00010000 && tables.maxp.length >= 22) {\n tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n }\n }\n if (!tables.hhea) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n\n // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n // Sometimes it's 0. That needs to be fixed\n if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n tables.hhea.data[10] = 0xff;\n tables.hhea.data[11] = 0xff;\n }\n\n // Extract some more font properties from the OpenType head and\n // hhea tables; yMin and descent value are always negative.\n const metricsOverride = {\n unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n yMax: int16(tables.head.data[42], tables.head.data[43]),\n yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\n };\n\n // PDF FontDescriptor metrics lie -- using data from actual font.\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n this.lineGap = this.cssFontInfo.metrics.lineGap;\n } else {\n this.lineHeight = this.ascent - this.descent + this.lineGap;\n }\n\n // The 'post' table has glyphs names.\n if (tables.post) {\n readPostScriptTable(tables.post, properties, numGlyphs);\n }\n\n // The original 'post' table is not needed, replace it.\n tables.post = {\n tag: \"post\",\n data: createPostTable(properties),\n };\n\n const charCodeToGlyphId = [];\n\n // Helper function to try to skip mapping of empty glyphs.\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n const cidToGidMap = properties.cidToGidMap || [];\n const isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function (charCode, cid) {\n if (typeof cid === \"string\") {\n cid = convertCidString(charCode, cid, /* shouldThrow = */ true);\n }\n if (cid > 0xffff) {\n throw new FormatError(\"Max size of CID is 65,535\");\n }\n let glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n } else {\n // Most of the following logic in this code branch is based on the\n // 9.6.6.4 of the PDF spec.\n const cmapTable = readCmapTable(\n tables.cmap,\n font,\n this.isSymbolicFont,\n properties.hasEncoding\n );\n const cmapPlatformId = cmapTable.platformId;\n const cmapEncodingId = cmapTable.encodingId;\n const cmapMappings = cmapTable.mappings;\n let baseEncoding = [],\n forcePostTable = false;\n if (\n properties.hasEncoding &&\n (properties.baseEncodingName === \"MacRomanEncoding\" ||\n properties.baseEncodingName === \"WinAnsiEncoding\")\n ) {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n\n // If the font has an encoding and is not symbolic then follow the rules\n // in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\n if (\n properties.hasEncoding &&\n !this.isSymbolicFont &&\n ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\n (cmapPlatformId === 1 && cmapEncodingId === 0))\n ) {\n const glyphsUnicodeMap = getGlyphsUnicode();\n for (let charCode = 0; charCode < 256; charCode++) {\n let glyphName;\n if (this.differences[charCode] !== undefined) {\n glyphName = this.differences[charCode];\n } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n // Ensure that non-standard glyph names are resolved to valid ones.\n const standardGlyphName = recoverGlyphName(\n glyphName,\n glyphsUnicodeMap\n );\n\n let unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n // TODO: the encoding needs to be updated with mac os table.\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n if (unicodeOrCharCode === undefined) {\n // Not a valid glyph name, fallback to using the /ToUnicode map\n // when no post-table exists (fixes issue13316_reduced.pdf).\n if (\n !properties.glyphNames &&\n properties.hasIncludedToUnicodeMap &&\n !(this.toUnicode instanceof IdentityToUnicodeMap)\n ) {\n const unicode = this.toUnicode.get(charCode);\n if (unicode) {\n unicodeOrCharCode = unicode.codePointAt(0);\n }\n }\n\n if (unicodeOrCharCode === undefined) {\n continue; // No valid glyph mapping found.\n }\n }\n\n for (const mapping of cmapMappings) {\n if (mapping.charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n break;\n }\n }\n } else if (cmapPlatformId === 0) {\n // Default Unicode semantics, use the charcodes as is.\n for (const mapping of cmapMappings) {\n charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\n }\n // Always prefer the BaseEncoding/Differences arrays, when they exist\n // (fixes issue13433.pdf).\n forcePostTable = true;\n } else {\n // When there is only a (1, 0) cmap table, the char code is a single\n // byte and it is used directly as the char code.\n\n // When a (3, 0) cmap table is present, it is used instead but the\n // spec has special rules for char codes in the range of 0xF000 to\n // 0xF0FF and it says the (3, 0) table should map the values from\n // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n // this, the upper bits of the char code are cleared, but only for the\n // special range since some PDFs have char codes outside of this range\n // (e.g. 0x2013) which when masked would overwrite other values in the\n // cmap.\n for (const mapping of cmapMappings) {\n let charCode = mapping.charCode;\n if (\n cmapPlatformId === 3 &&\n charCode >= 0xf000 &&\n charCode <= 0xf0ff\n ) {\n charCode &= 0xff;\n }\n charCodeToGlyphId[charCode] = mapping.glyphId;\n }\n }\n\n // Last, try to map any missing charcodes using the post table.\n if (\n properties.glyphNames &&\n (baseEncoding.length || this.differences.length)\n ) {\n for (let i = 0; i < 256; ++i) {\n if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n continue;\n }\n const glyphName = this.differences[i] || baseEncoding[i];\n if (!glyphName) {\n continue;\n }\n const glyphId = properties.glyphNames.indexOf(glyphName);\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[i] = glyphId;\n }\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n // defines at least one glyph\n charCodeToGlyphId[0] = 0;\n }\n\n // Typically glyph 0 is duplicated and the mapping must be updated, but if\n // there isn't enough room to duplicate, the glyph id is left the same. In\n // this case, glyph 0 may not work correctly, but that is better than\n // having the whole font fail.\n let glyphZeroId = numGlyphsOut - 1;\n if (!dupFirstEntry) {\n glyphZeroId = 0;\n }\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n // Converting glyphs and ids into font's cmap table\n const newMapping = adjustMapping(\n charCodeToGlyphId,\n hasGlyph,\n glyphZeroId,\n this.toUnicode\n );\n this.toFontChar = newMapping.toFontChar;\n tables.cmap = {\n tag: \"cmap\",\n data: createCmapTable(\n newMapping.charCodeToGlyphId,\n newMapping.toUnicodeExtraMap,\n numGlyphsOut\n ),\n };\n\n if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n tables[\"OS/2\"] = {\n tag: \"OS/2\",\n data: createOS2Table(\n properties,\n newMapping.charCodeToGlyphId,\n metricsOverride\n ),\n };\n }\n }\n\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables[\"CFF \"].data);\n const parser = new CFFParser(\n cffFile,\n properties,\n SEAC_ANALYSIS_ENABLED\n );\n cff = parser.parse();\n cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(cff);\n tables[\"CFF \"].data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n }\n }\n\n // Re-creating 'name' table\n if (!tables.name) {\n tables.name = {\n tag: \"name\",\n data: createNameTable(this.name),\n };\n } else {\n // ... using existing 'name' table as prototype\n const [namePrototype, nameRecords] = readNameTable(tables.name);\n\n tables.name.data = createNameTable(name, namePrototype);\n this.psName = namePrototype[0][6] || null;\n\n if (!properties.composite) {\n // For TrueType fonts that do not include `ToUnicode` or `Encoding`\n // data, attempt to use the name-table to improve text selection.\n adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords);\n }\n }\n\n const builder = new OpenTypeFileBuilder(header.version);\n for (const tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n }\n\n convert(fontName, font, properties) {\n // TODO: Check the charstring widths to determine this.\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n // data, attempt to use the `builtInEncoding` to improve text selection.\n adjustType1ToUnicode(properties, properties.builtInEncoding);\n }\n\n // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n // char strings.\n let glyphZeroId = 1;\n if (font instanceof CFFFont) {\n glyphZeroId = font.numGlyphs - 1;\n }\n const mapping = font.getGlyphMapping(properties);\n let newMapping = null;\n let newCharCodeToGlyphId = mapping;\n let toUnicodeExtraMap = null;\n\n // When `cssFontInfo` is set, the font is used to render text in the HTML\n // view (e.g. with Xfa) so nothing must be moved in the private use area.\n if (!properties.cssFontInfo) {\n newMapping = adjustMapping(\n mapping,\n font.hasGlyphId.bind(font),\n glyphZeroId,\n this.toUnicode\n );\n this.toFontChar = newMapping.toFontChar;\n newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n toUnicodeExtraMap = newMapping.toUnicodeExtraMap;\n }\n const numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n let charCodes = null;\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n charCodes.push(charCode | 0);\n }\n }\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (const charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n const seacs = font.seacs;\n if (newMapping && SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n const charset = font.getCharset();\n const seacMap = Object.create(null);\n for (let glyphId in seacs) {\n glyphId |= 0;\n const seac = seacs[glyphId];\n const baseGlyphName = StandardEncoding[seac[2]];\n const accentGlyphName = StandardEncoding[seac[3]];\n const baseGlyphId = charset.indexOf(baseGlyphName);\n const accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n const accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n };\n\n const charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n // There's no point in mapping it if the char code was never mapped\n // to begin with.\n continue;\n }\n for (const charCode of charCodes) {\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n const baseFontCharCode = createCharCode(\n charCodeToGlyphId,\n baseGlyphId\n );\n const accentFontCharCode = createCharCode(\n charCodeToGlyphId,\n accentGlyphId\n );\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset,\n };\n }\n }\n properties.seacMap = seacMap;\n }\n\n const unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n // PostScript Font Program\n builder.addTable(\"CFF \", font.data);\n // OS/2 and Windows Specific metrics\n builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable(\n \"cmap\",\n createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs)\n );\n // Font header\n builder.addTable(\n \"head\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n \"\\x00\\x00\\x10\\x00\" + // fontRevision\n \"\\x00\\x00\\x00\\x00\" + // checksumAdjustement\n \"\\x5F\\x0F\\x3C\\xF5\" + // magicNumber\n \"\\x00\\x00\" + // Flags\n safeString16(unitsPerEm) + // unitsPerEM\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // creation date\n \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + // modifification date\n \"\\x00\\x00\" + // xMin\n safeString16(properties.descent) + // yMin\n \"\\x0F\\xFF\" + // xMax\n safeString16(properties.ascent) + // yMax\n string16(properties.italicAngle ? 2 : 0) + // macStyle\n \"\\x00\\x11\" + // lowestRecPPEM\n \"\\x00\\x00\" + // fontDirectionHint\n \"\\x00\\x00\" + // indexToLocFormat\n \"\\x00\\x00\"\n ); // glyphDataFormat\n\n // Horizontal header\n builder.addTable(\n \"hhea\",\n \"\\x00\\x01\\x00\\x00\" + // Version number\n safeString16(properties.ascent) + // Typographic Ascent\n safeString16(properties.descent) + // Typographic Descent\n \"\\x00\\x00\" + // Line Gap\n \"\\xFF\\xFF\" + // advanceWidthMax\n \"\\x00\\x00\" + // minLeftSidebearing\n \"\\x00\\x00\" + // minRightSidebearing\n \"\\x00\\x00\" + // xMaxExtent\n safeString16(properties.capHeight) + // caretSlopeRise\n safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + // caretSlopeRun\n \"\\x00\\x00\" + // caretOffset\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // -reserved-\n \"\\x00\\x00\" + // metricDataFormat\n string16(numGlyphs)\n ); // Number of HMetrics\n\n // Horizontal metrics\n builder.addTable(\n \"hmtx\",\n (function fontFieldsHmtx() {\n const charstrings = font.charstrings;\n const cffWidths = font.cff ? font.cff.widths : null;\n let hmtx = \"\\x00\\x00\\x00\\x00\"; // Fake .notdef\n for (let i = 1, ii = numGlyphs; i < ii; i++) {\n let width = 0;\n if (charstrings) {\n const charstring = charstrings[i - 1];\n width = \"width\" in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx += string16(width) + string16(0);\n }\n return hmtx;\n })()\n );\n\n // Maximum profile\n builder.addTable(\n \"maxp\",\n \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs) // Version number\n ); // Num of glyphs\n\n // Naming tables\n builder.addTable(\"name\", createNameTable(fontName));\n\n // PostScript information\n builder.addTable(\"post\", createPostTable(properties));\n\n return builder.toArray();\n }\n\n get spaceWidth() {\n // trying to estimate space character width\n const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n let width;\n for (const glyphName of possibleSpaceReplacements) {\n // if possible, getting width by glyph name\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n const glyphsUnicodeMap = getGlyphsUnicode();\n const glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n let charcode = 0;\n if (this.composite && this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n\n if (typeof charcode === \"string\") {\n charcode = convertCidString(glyphUnicode, charcode);\n }\n }\n // ... via toUnicode map\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n // setting it to unicode if negative or undefined\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n // trying to get width via charcode\n width = this.widths[charcode];\n if (width) {\n break; // the non-zero width found\n }\n }\n width = width || this.defaultWidth;\n return shadow(this, \"spaceWidth\", width);\n }\n\n /**\n * @private\n */\n _charToGlyph(charcode, isSpace = false) {\n let glyph = this._glyphCache[charcode];\n // All `Glyph`-properties, except `isSpace` in multi-byte strings,\n // depend indirectly on the `charcode`.\n if (glyph && glyph.isSpace === isSpace) {\n return glyph;\n }\n let fontCharCode, width, operatorListId;\n\n let widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n\n if (typeof widthCode === \"string\") {\n widthCode = convertCidString(charcode, widthCode);\n }\n }\n width = this.widths[widthCode];\n if (typeof width !== \"number\") {\n width = this.defaultWidth;\n }\n const vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n let unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === \"number\") {\n unicode = String.fromCharCode(unicode);\n }\n\n let isInFont = this.toFontChar[charcode] !== undefined;\n // First try the toFontChar map, if it's not there then try falling\n // back to the char code.\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n const glyphName =\n this.differences[charcode] || this.defaultEncoding[charcode];\n if (\n (glyphName === \".notdef\" || glyphName === \"\") &&\n this.type === \"Type1\"\n ) {\n // .notdef glyphs should be invisible in non-embedded Type1 fonts, so\n // replace them with spaces.\n fontCharCode = 0x20;\n }\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n\n if (this.isType3Font) {\n // Font char code in this case is actually a glyph name.\n operatorListId = fontCharCode;\n }\n\n let accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n const seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCodePoint(seac.accentFontCharCode),\n offset: seac.accentOffset,\n };\n }\n\n let fontChar = \"\";\n if (typeof fontCharCode === \"number\") {\n if (fontCharCode <= 0x10ffff) {\n fontChar = String.fromCodePoint(fontCharCode);\n } else {\n warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n }\n }\n\n glyph = new Glyph(\n charcode,\n fontChar,\n unicode,\n accent,\n width,\n vmetric,\n operatorListId,\n isSpace,\n isInFont\n );\n return (this._glyphCache[charcode] = glyph);\n }\n\n charsToGlyphs(chars) {\n // If we translated this string before, just grab it from the cache.\n let glyphs = this._charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n glyphs = [];\n\n if (this.cMap) {\n // Composite fonts have multi-byte strings, convert the string from\n // single-byte to multi-byte.\n const c = Object.create(null),\n ii = chars.length;\n let i = 0;\n while (i < ii) {\n this.cMap.readCharCode(chars, i, c);\n const { charcode, length } = c;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n const glyph = this._charToGlyph(\n charcode,\n length === 1 && chars.charCodeAt(i - 1) === 0x20\n );\n glyphs.push(glyph);\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n const charcode = chars.charCodeAt(i);\n const glyph = this._charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache.\n return (this._charsCache[chars] = glyphs);\n }\n\n /**\n * Chars can have different sizes (depends on the encoding).\n * @param {String} a string encoded with font encoding.\n * @returns {Array<Array<number>>} the positions of each char in the string.\n */\n getCharPositions(chars) {\n // This function doesn't use a cache because\n // it's called only when saving or printing.\n const positions = [];\n\n if (this.cMap) {\n const c = Object.create(null);\n let i = 0;\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n const length = c.length;\n positions.push([i, i + length]);\n i += length;\n }\n } else {\n for (let i = 0, ii = chars.length; i < ii; ++i) {\n positions.push([i, i + 1]);\n }\n }\n\n return positions;\n }\n\n get glyphCacheValues() {\n return Object.values(this._glyphCache);\n }\n\n /**\n * Encode a js string using font encoding.\n * The resulting array contains an encoded string at even positions\n * (can be empty) and a non-encoded one at odd positions.\n * @param {String} a js string.\n * @returns {Array<String>} an array of encoded strings or non-encoded ones.\n */\n encodeString(str) {\n const buffers = [];\n const currentBuf = [];\n\n // buffers will contain: encoded, non-encoded, encoded, ...\n // currentBuf is pushed in buffers each time there is a change.\n // So when buffers.length is odd then the last string is an encoded one\n // and currentBuf contains non-encoded chars.\n const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n const getCharCode =\n this.toUnicode instanceof IdentityToUnicodeMap\n ? unicode => this.toUnicode.charCodeOf(unicode)\n : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n for (let i = 0, ii = str.length; i < ii; i++) {\n const unicode = str.codePointAt(i);\n if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n // unicode is represented by two uint16\n i++;\n }\n if (this.toUnicode) {\n const charCode = getCharCode(unicode);\n if (charCode !== -1) {\n if (hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n const charCodeLength = this.cMap\n ? this.cMap.getCharCodeLength(charCode)\n : 1;\n for (let j = charCodeLength - 1; j >= 0; j--) {\n currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\n }\n continue;\n }\n }\n\n // unicode can't be encoded\n if (!hasCurrentBufErrors()) {\n buffers.push(currentBuf.join(\"\"));\n currentBuf.length = 0;\n }\n currentBuf.push(String.fromCodePoint(unicode));\n }\n\n buffers.push(currentBuf.join(\"\"));\n\n return buffers;\n }\n}\n\nclass ErrorFont {\n constructor(error) {\n this.error = error;\n this.loadedName = \"g_font_error\";\n this.missingFile = true;\n }\n\n charsToGlyphs() {\n return [];\n }\n\n encodeString(chars) {\n return [chars];\n }\n\n exportData(extraProperties = false) {\n return { error: this.error };\n }\n}\n\nexport { ErrorFont, Font };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n info,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n ExpertCharset,\n ExpertSubsetCharset,\n ISOAdobeCharset,\n} from \"./charsets.js\";\nimport { ExpertEncoding, StandardEncoding } from \"./encodings.js\";\n\n// Maximum subroutine call depth of type 2 charstrings. Matches OTS.\nconst MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\n// prettier-ignore\nconst CFFStandardStrings = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\",\n \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\",\n \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\",\n \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\",\n \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\",\n \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\",\n \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\",\n \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\",\n \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\",\n \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\",\n \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\",\n \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\",\n \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\",\n \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\",\n \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\",\n \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\",\n \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\",\n \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\",\n \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\",\n \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\",\n \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\",\n \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\",\n \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\",\n \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\",\n \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\",\n \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\",\n \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\",\n \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\",\n \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\",\n \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\",\n \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\",\n \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\",\n \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\",\n \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\",\n \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\",\n \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\",\n \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\",\n \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\",\n \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\",\n \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\",\n \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\",\n \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\",\n \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\",\n \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\",\n \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"\n];\n\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CharstringValidationData = [\n /* 0 */ null,\n /* 1 */ { id: \"hstem\", min: 2, stackClearing: true, stem: true },\n /* 2 */ null,\n /* 3 */ { id: \"vstem\", min: 2, stackClearing: true, stem: true },\n /* 4 */ { id: \"vmoveto\", min: 1, stackClearing: true },\n /* 5 */ { id: \"rlineto\", min: 2, resetStack: true },\n /* 6 */ { id: \"hlineto\", min: 1, resetStack: true },\n /* 7 */ { id: \"vlineto\", min: 1, resetStack: true },\n /* 8 */ { id: \"rrcurveto\", min: 6, resetStack: true },\n /* 9 */ null,\n /* 10 */ { id: \"callsubr\", min: 1, undefStack: true },\n /* 11 */ { id: \"return\", min: 0, undefStack: true },\n /* 12 */ null,\n /* 13 */ null,\n /* 14 */ { id: \"endchar\", min: 0, stackClearing: true },\n /* 15 */ null,\n /* 16 */ null,\n /* 17 */ null,\n /* 18 */ { id: \"hstemhm\", min: 2, stackClearing: true, stem: true },\n /* 19 */ { id: \"hintmask\", min: 0, stackClearing: true },\n /* 20 */ { id: \"cntrmask\", min: 0, stackClearing: true },\n /* 21 */ { id: \"rmoveto\", min: 2, stackClearing: true },\n /* 22 */ { id: \"hmoveto\", min: 1, stackClearing: true },\n /* 23 */ { id: \"vstemhm\", min: 2, stackClearing: true, stem: true },\n /* 24 */ { id: \"rcurveline\", min: 8, resetStack: true },\n /* 25 */ { id: \"rlinecurve\", min: 8, resetStack: true },\n /* 26 */ { id: \"vvcurveto\", min: 4, resetStack: true },\n /* 27 */ { id: \"hhcurveto\", min: 4, resetStack: true },\n /* 28 */ null, // shortint\n /* 29 */ { id: \"callgsubr\", min: 1, undefStack: true },\n /* 30 */ { id: \"vhcurveto\", min: 4, resetStack: true },\n /* 31 */ { id: \"hvcurveto\", min: 4, resetStack: true },\n];\n\nconst CharstringValidationData12 = [\n null,\n null,\n null,\n { id: \"and\", min: 2, stackDelta: -1 },\n { id: \"or\", min: 2, stackDelta: -1 },\n { id: \"not\", min: 1, stackDelta: 0 },\n null,\n null,\n null,\n { id: \"abs\", min: 1, stackDelta: 0 },\n {\n id: \"add\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n },\n },\n {\n id: \"sub\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n },\n },\n {\n id: \"div\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n },\n },\n null,\n {\n id: \"neg\",\n min: 1,\n stackDelta: 0,\n stackFn(stack, index) {\n stack[index - 1] = -stack[index - 1];\n },\n },\n { id: \"eq\", min: 2, stackDelta: -1 },\n null,\n null,\n { id: \"drop\", min: 1, stackDelta: -1 },\n null,\n { id: \"put\", min: 2, stackDelta: -2 },\n { id: \"get\", min: 1, stackDelta: 0 },\n { id: \"ifelse\", min: 4, stackDelta: -3 },\n { id: \"random\", min: 0, stackDelta: 1 },\n {\n id: \"mul\",\n min: 2,\n stackDelta: -1,\n stackFn(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n },\n },\n null,\n { id: \"sqrt\", min: 1, stackDelta: 0 },\n { id: \"dup\", min: 1, stackDelta: 1 },\n { id: \"exch\", min: 2, stackDelta: 0 },\n { id: \"index\", min: 2, stackDelta: 0 },\n { id: \"roll\", min: 3, stackDelta: -2 },\n null,\n null,\n null,\n { id: \"hflex\", min: 7, resetStack: true },\n { id: \"flex\", min: 13, resetStack: true },\n { id: \"hflex1\", min: 9, resetStack: true },\n { id: \"flex1\", min: 11, resetStack: true },\n];\n\nclass CFFParser {\n constructor(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n\n parse() {\n const properties = this.properties;\n const cff = new CFF();\n this.cff = cff;\n\n // The first five sections must be in order, all the others are reached\n // via offsets contained in one of the below.\n const header = this.parseHeader();\n const nameIndex = this.parseIndex(header.endPos);\n const topDictIndex = this.parseIndex(nameIndex.endPos);\n const stringIndex = this.parseIndex(topDictIndex.endPos);\n const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n\n this.parsePrivateDict(cff.topDict);\n\n cff.isCIDFont = topDict.hasName(\"ROS\");\n\n const charStringOffset = topDict.getByName(\"CharStrings\");\n const charStringIndex = this.parseIndex(charStringOffset).obj;\n\n const fontMatrix = topDict.getByName(\"FontMatrix\");\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n const fontBBox = topDict.getByName(\"FontBBox\");\n if (fontBBox) {\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n let charset, encoding;\n if (cff.isCIDFont) {\n const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n const dictRaw = fdArrayIndex.get(i);\n const fontDict = this.createDict(\n CFFTopDict,\n this.parseDict(dictRaw),\n cff.strings\n );\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n // cid fonts don't have an encoding\n encoding = null;\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n true\n );\n cff.fdSelect = this.parseFDSelect(\n topDict.getByName(\"FDSelect\"),\n charStringIndex.count\n );\n } else {\n charset = this.parseCharsets(\n topDict.getByName(\"charset\"),\n charStringIndex.count,\n cff.strings,\n false\n );\n encoding = this.parseEncoding(\n topDict.getByName(\"Encoding\"),\n properties,\n cff.strings,\n charset.charset\n );\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n\n const charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict,\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n\n return cff;\n }\n\n parseHeader() {\n let bytes = this.bytes;\n const bytesLength = bytes.length;\n let offset = 0;\n\n // Prevent an infinite loop, by checking that the offset is within the\n // bounds of the bytes array. Necessary in empty, or invalid, font files.\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError(\"Invalid CFF header\");\n }\n if (offset !== 0) {\n info(\"cff data is shifted\");\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n const major = bytes[0];\n const minor = bytes[1];\n const hdrSize = bytes[2];\n const offSize = bytes[3];\n const header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize };\n }\n\n parseDict(dict) {\n let pos = 0;\n\n function parseOperand() {\n let value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return (value - 247) * 256 + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n let str = \"\";\n const eof = 15;\n // prettier-ignore\n const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n const length = dict.length;\n while (pos < length) {\n const b = dict[pos++];\n const b1 = b >> 4;\n const b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n\n let operands = [];\n const entries = [];\n\n pos = 0;\n const end = dict.length;\n while (pos < end) {\n let b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = (b << 8) | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n }\n\n parseIndex(pos) {\n const cffIndex = new CFFIndex();\n const bytes = this.bytes;\n const count = (bytes[pos++] << 8) | bytes[pos++];\n const offsets = [];\n let end = pos;\n let i, ii;\n\n if (count !== 0) {\n const offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n const startPos = pos + (count + 1) * offsetSize - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n let offset = 0;\n for (let j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n const offsetStart = offsets[i];\n const offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end };\n }\n\n parseNameIndex(index) {\n const names = [];\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const name = index.get(i);\n names.push(bytesToString(name));\n }\n return names;\n }\n\n parseStringIndex(index) {\n const strings = new CFFStrings();\n for (let i = 0, ii = index.count; i < ii; ++i) {\n const data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n }\n\n createDict(Type, dict, strings) {\n const cffDict = new Type(strings);\n for (const [key, value] of dict) {\n cffDict.setByKey(key, value);\n }\n return cffDict;\n }\n\n parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n let stackSize = state.stackSize;\n const stack = state.stack;\n\n let length = data.length;\n\n for (let j = 0; j < length; ) {\n const value = data[j++];\n let validationCommand = null;\n if (value === 12) {\n const q = data[j++];\n if (q === 0) {\n // The CFF specification state that the 'dotsection' command\n // (12, 0) is deprecated and treated as a no-op, but all Type2\n // charstrings processors should support them. Unfortunately\n // the font sanitizer don't. As a workaround the sequence (12, 0)\n // is replaced by a useless (0, hmoveto).\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) {\n // number (16 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) {\n // number\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) {\n // number (+1 bytes)\n stack[stackSize] =\n value < 251\n ? ((value - 247) << 8) + data[j] + 108\n : -((value - 251) << 8) - data[j] - 108;\n j++;\n stackSize++;\n } else if (value === 255) {\n // number (32 bit)\n stack[stackSize] =\n ((data[j] << 24) |\n (data[j + 1] << 16) |\n (data[j + 2] << 8) |\n data[j + 3]) /\n 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n // skipping right amount of hints flag data\n j += (state.hints + 7) >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n let subrsIndex;\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn(\"Missing subrsIndex for \" + validationCommand.id);\n return false;\n }\n let bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n const subrNumber = stack[--stackSize] + bias;\n if (\n subrNumber < 0 ||\n subrNumber >= subrsIndex.count ||\n isNaN(subrNumber)\n ) {\n validationCommand = CharstringValidationData[value];\n warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n const valid = this.parseCharString(\n state,\n subrsIndex.get(subrNumber),\n localSubrIndex,\n globalSubrIndex\n );\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else if (value === 0 && j === data.length) {\n // Operator 0 is not used according to the current spec and\n // it's the last char and consequently it's likely a terminator.\n // So just replace it by endchar command to make OTS happy.\n data[j - 1] = 14;\n validationCommand = CharstringValidationData[14];\n } else if (value === 9) {\n // Not a valid value.\n data.copyWithin(j - 1, j, -1);\n j -= 1;\n length -= 1;\n continue;\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n if (value === 3 || value === 23) {\n // vstem or vstemhm.\n state.hasVStems = true;\n } else if (state.hasVStems && (value === 1 || value === 18)) {\n // Some browsers don't draw glyphs that specify vstems before\n // hstems. As a workaround, replace hstem (1) and hstemhm (18)\n // with a pointless vstem (3) or vstemhm (23).\n warn(\"CFF stem hints are in wrong order\");\n data[j - 1] = value === 1 ? 3 : 23;\n }\n }\n if (\"min\" in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n warn(\n \"Not enough parameters for \" +\n validationCommand.id +\n \"; actual: \" +\n stackSize +\n \", expected: \" +\n validationCommand.min\n );\n\n if (stackSize === 0) {\n // Just \"fix\" the outline in replacing command by a endchar:\n // it could lead to wrong rendering of some glyphs or not.\n // For example, the pdf in #6132 is well-rendered.\n data[j - 1] = 14;\n return true;\n }\n return false;\n }\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n // the optional character width can be found before the first\n // stack-clearing command arguments\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n // there are even amount of arguments for stem commands\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn(\"Found too many parameters for stack-clearing command\");\n }\n if (stackSize > 0) {\n // Width can be any number since its the difference\n // from nominalWidthX.\n state.width = stack[stackSize - 1];\n }\n }\n if (\"stackDelta\" in validationCommand) {\n if (\"stackFn\" in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n if (length < data.length) {\n data.fill(/* endchar = */ 14, length);\n }\n state.stackSize = stackSize;\n return true;\n }\n\n parseCharStrings({\n charStrings,\n localSubrIndex,\n globalSubrIndex,\n fdSelect,\n fdArray,\n privateDict,\n }) {\n const seacs = [];\n const widths = [];\n const count = charStrings.count;\n for (let i = 0; i < count; i++) {\n const charstring = charStrings.get(i);\n const state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n hasVStems: false,\n };\n let valid = true;\n let localSubrToUse = null;\n let privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n const fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn(\"Glyph index is not in fd select.\");\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn(\"Invalid fd index for glyph index.\");\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n if (valid) {\n valid = this.parseCharString(\n state,\n charstring,\n localSubrToUse,\n globalSubrIndex\n );\n }\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n // resetting invalid charstring to single 'endchar'\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return { charStrings, seacs, widths };\n }\n\n emptyPrivateDictionary(parentDict) {\n const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n }\n\n parsePrivateDict(parentDict) {\n // no private dict, do nothing\n if (!parentDict.hasName(\"Private\")) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const privateOffset = parentDict.getByName(\"Private\");\n // make sure the params are formatted correctly\n if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName(\"Private\");\n return;\n }\n const size = privateOffset[0];\n const offset = privateOffset[1];\n // remove empty dicts or ones that refer to invalid location\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n const privateDictEnd = offset + size;\n const dictData = this.bytes.subarray(offset, privateDictEnd);\n const dict = this.parseDict(dictData);\n const privateDict = this.createDict(\n CFFPrivateDict,\n dict,\n parentDict.strings\n );\n parentDict.privateDict = privateDict;\n\n if (privateDict.getByName(\"ExpansionFactor\") === 0) {\n // Firefox doesn't render correctly such a font on Windows (see issue\n // 15289), hence we just reset it to its default value.\n privateDict.setByName(\"ExpansionFactor\", 0.06);\n }\n\n // Parse the Subrs index also since it's relative to the private dict.\n if (!privateDict.getByName(\"Subrs\")) {\n return;\n }\n const subrsOffset = privateDict.getByName(\"Subrs\");\n const relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n const subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n }\n\n parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.ISO_ADOBE,\n ISOAdobeCharset\n );\n } else if (pos === 1) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT,\n ExpertCharset\n );\n } else if (pos === 2) {\n return new CFFCharset(\n true,\n CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n ExpertSubsetCharset\n );\n }\n\n const bytes = this.bytes;\n const start = pos;\n const format = bytes[pos++];\n const charset = [cid ? 0 : \".notdef\"];\n let id, count, i;\n\n // subtract 1 for the .notdef glyph\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError(\"Unknown charset format\");\n }\n // Raw won't be needed if we actually compile the charset.\n const end = pos;\n const raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n }\n\n parseEncoding(pos, properties, strings, charset) {\n const encoding = Object.create(null);\n const bytes = this.bytes;\n let predefined = false;\n let format, i, ii;\n let raw = null;\n\n function readSupplement() {\n const supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n const code = bytes[pos++];\n const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n const index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n const dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n const glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n const rangesCount = bytes[pos++];\n let gid = 1;\n for (i = 0; i < rangesCount; i++) {\n const start = bytes[pos++];\n const left = bytes[pos++];\n for (let j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n const dataEnd = pos;\n if (format & 0x80) {\n // hasSupplement\n // The font sanitizer does not support CFF encoding with a\n // supplement, since the encoding is not really used to map\n // between gid to glyph, let's overwrite what is declared in\n // the top dictionary to let the sanitizer think the font use\n // StandardEncoding, that's a lie but that's ok.\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format &= 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n }\n\n parseFDSelect(pos, length) {\n const bytes = this.bytes;\n const format = bytes[pos++];\n const fdSelect = [];\n let i;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n const id = bytes[pos++];\n fdSelect.push(id);\n }\n break;\n case 3:\n const rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n let first = (bytes[pos++] << 8) | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn(\n \"parseFDSelect: The first range must have a first GID of 0\" +\n \" -- trying to recover.\"\n );\n first = 0;\n }\n const fdIndex = bytes[pos++];\n const next = (bytes[pos] << 8) | bytes[pos + 1];\n for (let j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n // Advance past the sentinel(next).\n pos += 2;\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError(\"parseFDSelect: Invalid font data.\");\n }\n\n return new CFFFDSelect(format, fdSelect);\n }\n}\n\n// Compact Font Format\nclass CFF {\n constructor() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n\n // The following could really be per font, but since we only have one font\n // store them here.\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n\n this.isCIDFont = false;\n }\n\n duplicateFirstGlyph() {\n // Browsers will not display a glyph at position 0. Typically glyph 0 is\n // notdef, but a number of fonts put a valid glyph there so it must be\n // duplicated and appended.\n if (this.charStrings.count >= 65535) {\n warn(\"Not enough space in charstrings to duplicate first glyph.\");\n return;\n }\n const glyphZero = this.charStrings.get(0);\n this.charStrings.add(glyphZero);\n if (this.isCIDFont) {\n this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n }\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.charStrings.count) {\n return false;\n }\n const glyph = this.charStrings.get(id);\n return glyph.length > 0;\n }\n}\n\nclass CFFHeader {\n constructor(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n}\n\nclass CFFStrings {\n constructor() {\n this.strings = [];\n }\n\n get(index) {\n if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n return CFFStandardStrings[index];\n }\n if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n }\n return CFFStandardStrings[0];\n }\n\n getSID(str) {\n let index = CFFStandardStrings.indexOf(str);\n if (index !== -1) {\n return index;\n }\n index = this.strings.indexOf(str);\n if (index !== -1) {\n return index + NUM_STANDARD_CFF_STRINGS;\n }\n return -1;\n }\n\n add(value) {\n this.strings.push(value);\n }\n\n get count() {\n return this.strings.length;\n }\n}\n\nclass CFFIndex {\n constructor() {\n this.objects = [];\n this.length = 0;\n }\n\n add(data) {\n this.length += data.length;\n this.objects.push(data);\n }\n\n set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n }\n\n get(index) {\n return this.objects[index];\n }\n\n get count() {\n return this.objects.length;\n }\n}\n\nclass CFFDict {\n constructor(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n\n // value should always be an array\n setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n // ignore empty values\n if (value.length === 0) {\n return true;\n }\n // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n for (const val of value) {\n if (isNaN(val)) {\n warn(`Invalid CFFDict value: \"${value}\" for key \"${key}\".`);\n return true;\n }\n }\n const type = this.types[key];\n // remove the array wrapping these types of values\n if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n }\n\n setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n }\n\n hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n }\n\n getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n const key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n }\n\n removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n }\n\n static createTables(layout) {\n const tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (const entry of layout) {\n const key = Array.isArray(entry[0])\n ? (entry[0][0] << 8) + entry[0][1]\n : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n }\n}\n\nconst CFFTopDictLayout = [\n [[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null],\n [[12, 20], \"SyntheticBase\", \"num\", null],\n [0, \"version\", \"sid\", null],\n [1, \"Notice\", \"sid\", null],\n [[12, 0], \"Copyright\", \"sid\", null],\n [2, \"FullName\", \"sid\", null],\n [3, \"FamilyName\", \"sid\", null],\n [4, \"Weight\", \"sid\", null],\n [[12, 1], \"isFixedPitch\", \"num\", 0],\n [[12, 2], \"ItalicAngle\", \"num\", 0],\n [[12, 3], \"UnderlinePosition\", \"num\", -100],\n [[12, 4], \"UnderlineThickness\", \"num\", 50],\n [[12, 5], \"PaintType\", \"num\", 0],\n [[12, 6], \"CharstringType\", \"num\", 2],\n // prettier-ignore\n [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"],\n [0.001, 0, 0, 0.001, 0, 0]],\n [13, \"UniqueID\", \"num\", null],\n [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]],\n [[12, 8], \"StrokeWidth\", \"num\", 0],\n [14, \"XUID\", \"array\", null],\n [15, \"charset\", \"offset\", 0],\n [16, \"Encoding\", \"offset\", 0],\n [17, \"CharStrings\", \"offset\", 0],\n [18, \"Private\", [\"offset\", \"offset\"], null],\n [[12, 21], \"PostScript\", \"sid\", null],\n [[12, 22], \"BaseFontName\", \"sid\", null],\n [[12, 23], \"BaseFontBlend\", \"delta\", null],\n [[12, 31], \"CIDFontVersion\", \"num\", 0],\n [[12, 32], \"CIDFontRevision\", \"num\", 0],\n [[12, 33], \"CIDFontType\", \"num\", 0],\n [[12, 34], \"CIDCount\", \"num\", 8720],\n [[12, 35], \"UIDBase\", \"num\", null],\n // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n // before FDArray.\n [[12, 37], \"FDSelect\", \"offset\", null],\n [[12, 36], \"FDArray\", \"offset\", null],\n [[12, 38], \"FontName\", \"sid\", null],\n];\n\nclass CFFTopDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFTopDictLayout));\n }\n\n constructor(strings) {\n super(CFFTopDict.tables, strings);\n this.privateDict = null;\n }\n}\n\nconst CFFPrivateDictLayout = [\n [6, \"BlueValues\", \"delta\", null],\n [7, \"OtherBlues\", \"delta\", null],\n [8, \"FamilyBlues\", \"delta\", null],\n [9, \"FamilyOtherBlues\", \"delta\", null],\n [[12, 9], \"BlueScale\", \"num\", 0.039625],\n [[12, 10], \"BlueShift\", \"num\", 7],\n [[12, 11], \"BlueFuzz\", \"num\", 1],\n [10, \"StdHW\", \"num\", null],\n [11, \"StdVW\", \"num\", null],\n [[12, 12], \"StemSnapH\", \"delta\", null],\n [[12, 13], \"StemSnapV\", \"delta\", null],\n [[12, 14], \"ForceBold\", \"num\", 0],\n [[12, 17], \"LanguageGroup\", \"num\", 0],\n [[12, 18], \"ExpansionFactor\", \"num\", 0.06],\n [[12, 19], \"initialRandomSeed\", \"num\", 0],\n [20, \"defaultWidthX\", \"num\", 0],\n [21, \"nominalWidthX\", \"num\", 0],\n [19, \"Subrs\", \"offset\", null],\n];\n\nclass CFFPrivateDict extends CFFDict {\n static get tables() {\n return shadow(this, \"tables\", this.createTables(CFFPrivateDictLayout));\n }\n\n constructor(strings) {\n super(CFFPrivateDict.tables, strings);\n this.subrsIndex = null;\n }\n}\n\nconst CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\n\nclass CFFCharset {\n constructor(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n}\n\nclass CFFEncoding {\n constructor(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n}\n\nclass CFFFDSelect {\n constructor(format, fdSelect) {\n this.format = format;\n this.fdSelect = fdSelect;\n }\n\n getFDIndex(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n }\n}\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nclass CFFOffsetTracker {\n constructor() {\n this.offsets = Object.create(null);\n }\n\n isTracking(key) {\n return key in this.offsets;\n }\n\n track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n }\n\n offset(value) {\n for (const key in this.offsets) {\n this.offsets[key] += value;\n }\n }\n\n setEntryLocation(key, values, output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n const data = output.data;\n const dataOffset = this.offsets[key];\n const size = 5;\n for (let i = 0, ii = values.length; i < ii; ++i) {\n const offset0 = i * size + dataOffset;\n const offset1 = offset0 + 1;\n const offset2 = offset0 + 2;\n const offset3 = offset0 + 3;\n const offset4 = offset0 + 4;\n // It's easy to screw up offsets so perform this sanity check.\n if (\n data[offset0] !== 0x1d ||\n data[offset1] !== 0 ||\n data[offset2] !== 0 ||\n data[offset3] !== 0 ||\n data[offset4] !== 0\n ) {\n throw new FormatError(\"writing to an offset that is not empty\");\n }\n const value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = (value >> 24) & 0xff;\n data[offset2] = (value >> 16) & 0xff;\n data[offset3] = (value >> 8) & 0xff;\n data[offset4] = value & 0xff;\n }\n }\n}\n\n// Takes a CFF and converts it to the binary representation.\nclass CFFCompiler {\n constructor(cff) {\n this.cff = cff;\n }\n\n compile() {\n const cff = this.cff;\n const output = {\n data: [],\n length: 0,\n add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n },\n };\n\n // Compile the five entries that must be in order.\n const header = this.compileHeader(cff.header);\n output.add(header);\n\n const nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n // The spec is unclear on how font matrices should relate to each other\n // when there is one in the main top dict and the sub top dicts.\n // Windows handles this differently than linux and osx so we have to\n // normalize to work on all.\n // Rules based off of some mailing list discussions:\n // - If main font has a matrix and subfont doesn't, use the main matrix.\n // - If no main font matrix and there is a subfont matrix, use the\n // subfont matrix.\n // - If both have matrices, concat together.\n // - If neither have matrices, use default.\n // To make this work on all platforms we move the top matrix into each\n // sub top dict and concat if necessary.\n if (cff.topDict.hasName(\"FontMatrix\")) {\n const base = cff.topDict.getByName(\"FontMatrix\");\n cff.topDict.removeByName(\"FontMatrix\");\n for (const subDict of cff.fdArray) {\n let matrix = base.slice(0);\n if (subDict.hasName(\"FontMatrix\")) {\n matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n }\n subDict.setByName(\"FontMatrix\", matrix);\n }\n }\n }\n\n const xuid = cff.topDict.getByName(\"XUID\");\n if (xuid && xuid.length > 16) {\n // Length of XUID array must not be greater than 16 (issue #12399).\n cff.topDict.removeByName(\"XUID\");\n }\n\n cff.topDict.setByName(\"charset\", 0);\n let compiled = this.compileTopDicts(\n [cff.topDict],\n output.length,\n cff.isCIDFont\n );\n output.add(compiled.output);\n const topDictTracker = compiled.trackers[0];\n\n const stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n // Now start on the other entries that have no specific order.\n if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation(\n \"Encoding\",\n [cff.encoding.format],\n output\n );\n } else {\n const encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n output.add(encoding);\n }\n }\n const charset = this.compileCharset(\n cff.charset,\n cff.charStrings.count,\n cff.strings,\n cff.isCIDFont\n );\n topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n output.add(charset);\n\n const charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n // For some reason FDSelect must be in front of FDArray on windows. OSX\n // and linux don't seem to care.\n topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n const fdSelect = this.compileFDSelect(cff.fdSelect);\n output.add(fdSelect);\n // It is unclear if the sub font dictionary can have CID related\n // dictionary keys, but the sanitizer doesn't like them so remove them.\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n output.add(compiled.output);\n const fontDictTrackers = compiled.trackers;\n\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n // If the font data ends with INDEX whose object data is zero-length,\n // the sanitizer will bail out. Add a dummy byte to avoid that.\n output.add([0]);\n\n return output.data;\n }\n\n encodeNumber(value) {\n if (Number.isInteger(value)) {\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n }\n\n static get EncodeFloatRegExp() {\n return shadow(\n this,\n \"EncodeFloatRegExp\",\n /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/\n );\n }\n\n encodeFloat(num) {\n let value = num.toString();\n\n // Rounding inaccurate doubles.\n const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n if (m) {\n const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n let nibbles = \"\";\n let i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n const a = value[i];\n if (a === \"e\") {\n nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n } else if (a === \".\") {\n nibbles += \"a\";\n } else if (a === \"-\") {\n nibbles += \"e\";\n } else {\n nibbles += a;\n }\n }\n nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n const out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substring(i, i + 2), 16));\n }\n return out;\n }\n\n encodeInteger(value) {\n let code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value -= 108;\n code = [(value >> 8) + 247, value & 0xff];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xff];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, (value >> 8) & 0xff, value & 0xff];\n } else {\n code = [\n 0x1d,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff,\n ];\n }\n return code;\n }\n\n compileHeader(header) {\n // `header.hdrSize` can be any value but we only write 4 values\n // so header size is 4 (prevents OTS from rejecting the font).\n return [header.major, header.minor, 4, header.offSize];\n }\n\n compileNameIndex(names) {\n const nameIndex = new CFFIndex();\n for (const name of names) {\n // OTS doesn't allow names to be over 127 characters.\n const length = Math.min(name.length, 127);\n let sanitizedName = new Array(length);\n for (let j = 0; j < length; j++) {\n // OTS requires chars to be between a range and not certain other\n // chars.\n let char = name[j];\n if (\n char < \"!\" ||\n char > \"~\" ||\n char === \"[\" ||\n char === \"]\" ||\n char === \"(\" ||\n char === \")\" ||\n char === \"{\" ||\n char === \"}\" ||\n char === \"<\" ||\n char === \">\" ||\n char === \"/\" ||\n char === \"%\"\n ) {\n char = \"_\";\n }\n sanitizedName[j] = char;\n }\n sanitizedName = sanitizedName.join(\"\");\n\n if (sanitizedName === \"\") {\n sanitizedName = \"Bad_Font_Name\";\n }\n nameIndex.add(stringToBytes(sanitizedName));\n }\n return this.compileIndex(nameIndex);\n }\n\n compileTopDicts(dicts, length, removeCidKeys) {\n const fontDictTrackers = [];\n let fdArrayIndex = new CFFIndex();\n for (const fontDict of dicts) {\n if (removeCidKeys) {\n fontDict.removeByName(\"CIDFontVersion\");\n fontDict.removeByName(\"CIDFontRevision\");\n fontDict.removeByName(\"CIDFontType\");\n fontDict.removeByName(\"CIDCount\");\n fontDict.removeByName(\"UIDBase\");\n }\n const fontDictTracker = new CFFOffsetTracker();\n const fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex,\n };\n }\n\n compilePrivateDicts(dicts, trackers, output) {\n for (let i = 0, ii = dicts.length; i < ii; ++i) {\n const fontDict = dicts[i];\n const privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName(\"Private\")) {\n throw new FormatError(\"There must be a private dictionary.\");\n }\n const privateDictTracker = new CFFOffsetTracker();\n const privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n let outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n // The private dictionary was empty, set the output length to zero to\n // ensure the offset length isn't out of bounds in the eyes of the\n // sanitizer.\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation(\n \"Private\",\n [privateDictData.length, outputLength],\n output\n );\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n const subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation(\n \"Subrs\",\n [privateDictData.length],\n output\n );\n output.add(subrs);\n }\n }\n }\n\n compileDict(dict, offsetTracker) {\n const out = [];\n // The dictionary keys must be in a certain order.\n for (const key of dict.order) {\n if (!(key in dict.values)) {\n continue;\n }\n let values = dict.values[key];\n let types = dict.types[key];\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n // Remove any empty dict values.\n if (values.length === 0) {\n continue;\n }\n\n for (let j = 0, jj = types.length; j < jj; ++j) {\n const type = types[j];\n const value = values[j];\n switch (type) {\n case \"num\":\n case \"sid\":\n out.push(...this.encodeNumber(value));\n break;\n case \"offset\":\n // For offsets we just insert a 32bit integer so we don't have to\n // deal with figuring out the length of the offset when it gets\n // replaced later on by the compiler.\n const name = dict.keyToNameMap[key];\n // Some offsets have the offset and the length, so just record the\n // position of the first one.\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out.push(0x1d, 0, 0, 0, 0);\n break;\n case \"array\":\n case \"delta\":\n out.push(...this.encodeNumber(value));\n for (let k = 1, kk = values.length; k < kk; ++k) {\n out.push(...this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out.push(...dict.opcodes[key]);\n }\n return out;\n }\n\n compileStringIndex(strings) {\n const stringIndex = new CFFIndex();\n for (const string of strings) {\n stringIndex.add(stringToBytes(string));\n }\n return this.compileIndex(stringIndex);\n }\n\n compileGlobalSubrIndex() {\n const globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n }\n\n compileCharStrings(charStrings) {\n const charStringsIndex = new CFFIndex();\n for (let i = 0; i < charStrings.count; i++) {\n const glyph = charStrings.get(i);\n // If the CharString outline is empty, replace it with .notdef to\n // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n if (glyph.length === 0) {\n charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n continue;\n }\n charStringsIndex.add(glyph);\n }\n return this.compileIndex(charStringsIndex);\n }\n\n compileCharset(charset, numGlyphs, strings, isCIDFont) {\n // Freetype requires the number of charset strings be correct and MacOS\n // requires a valid mapping for printing.\n let out;\n const numGlyphsLessNotDef = numGlyphs - 1;\n if (isCIDFont) {\n // In a CID font, the charset is a mapping of CIDs not SIDs so just\n // create an identity mapping.\n out = new Uint8Array([\n 2, // format\n 0, // first CID upper byte\n 0, // first CID lower byte\n (numGlyphsLessNotDef >> 8) & 0xff,\n numGlyphsLessNotDef & 0xff,\n ]);\n } else {\n const length = 1 + numGlyphsLessNotDef * 2;\n out = new Uint8Array(length);\n out[0] = 0; // format 0\n let charsetIndex = 0;\n const numCharsets = charset.charset.length;\n let warned = false;\n for (let i = 1; i < out.length; i += 2) {\n let sid = 0;\n if (charsetIndex < numCharsets) {\n const name = charset.charset[charsetIndex++];\n sid = strings.getSID(name);\n if (sid === -1) {\n sid = 0;\n if (!warned) {\n warned = true;\n warn(`Couldn't find ${name} in CFF strings`);\n }\n }\n }\n out[i] = (sid >> 8) & 0xff;\n out[i + 1] = sid & 0xff;\n }\n }\n return this.compileTypedArray(out);\n }\n\n compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n }\n\n compileFDSelect(fdSelect) {\n const format = fdSelect.format;\n let out, i;\n switch (format) {\n case 0:\n out = new Uint8Array(1 + fdSelect.fdSelect.length);\n out[0] = format;\n for (i = 0; i < fdSelect.fdSelect.length; i++) {\n out[i + 1] = fdSelect.fdSelect[i];\n }\n break;\n case 3:\n const start = 0;\n let lastFD = fdSelect.fdSelect[0];\n const ranges = [\n format,\n 0, // nRanges place holder\n 0, // nRanges place holder\n (start >> 8) & 0xff,\n start & 0xff,\n lastFD,\n ];\n for (i = 1; i < fdSelect.fdSelect.length; i++) {\n const currentFD = fdSelect.fdSelect[i];\n if (currentFD !== lastFD) {\n ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\n lastFD = currentFD;\n }\n }\n // 3 bytes are pushed for every range and there are 3 header bytes.\n const numRanges = (ranges.length - 3) / 3;\n ranges[1] = (numRanges >> 8) & 0xff;\n ranges[2] = numRanges & 0xff;\n // sentinel\n ranges.push((i >> 8) & 0xff, i & 0xff);\n out = new Uint8Array(ranges);\n break;\n }\n return this.compileTypedArray(out);\n }\n\n compileTypedArray(data) {\n const out = [];\n for (let i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n }\n\n compileIndex(index, trackers = []) {\n const objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n const count = objects.length;\n\n // If there is no object, just create an index.\n if (count === 0) {\n return [0, 0];\n }\n\n const data = [(count >> 8) & 0xff, count & 0xff];\n\n let lastOffset = 1,\n i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n let offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n // Next byte contains the offset size use to reference object in the file\n data.push(offsetSize);\n\n // Add another offset after this one because we need a new offset\n let relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xff);\n } else if (offsetSize === 2) {\n data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\n } else if (offsetSize === 3) {\n data.push(\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n } else {\n data.push(\n (relativeOffset >>> 24) & 0xff,\n (relativeOffset >> 16) & 0xff,\n (relativeOffset >> 8) & 0xff,\n relativeOffset & 0xff\n );\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n // Notify the tracker where the object will be offset in the data.\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n data.push(...objects[i]);\n }\n return data;\n }\n}\n\nexport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFFDSelect,\n CFFHeader,\n CFFIndex,\n CFFParser,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ISOAdobeCharset = [\n \".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\",\n \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\",\n \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\",\n \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\",\n \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\",\n \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\",\n \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\",\n \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\",\n \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\",\n \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\",\n \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\",\n \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\",\n \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\",\n \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\",\n \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\",\n \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\",\n \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\",\n \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\",\n \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\",\n \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\",\n \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\",\n \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\",\n \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\",\n \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\",\n \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\",\n \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"\n];\n\n// prettier-ignore\nconst ExpertCharset = [\n \".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\",\n \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\",\n \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\",\n \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\",\n \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\",\n \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\",\n \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\",\n \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"\n];\n\n// prettier-ignore\nconst ExpertSubsetCharset = [\n \".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\",\n \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\",\n \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\",\n \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\",\n \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\",\n \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\",\n \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\",\n \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\",\n \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\",\n \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\",\n \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\",\n \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\",\n \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\",\n \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\",\n \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\",\n \"periodinferior\", \"commainferior\"\n];\n\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// prettier-ignore\nconst ExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\",\n \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\",\n \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\",\n \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\",\n \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\",\n \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\",\n \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\",\n \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\",\n \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\",\n \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\",\n \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\",\n \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\",\n \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\",\n \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\",\n \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\",\n \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\",\n \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\",\n \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\",\n \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\",\n \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\",\n \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\",\n \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\",\n \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\",\n \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\",\n \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\",\n \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\",\n \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\",\n \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\",\n \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\",\n \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\",\n \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\",\n \"Ydieresissmall\"];\n\n// prettier-ignore\nconst MacExpertEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\",\n \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\",\n \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\",\n \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\",\n \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\",\n \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\",\n \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\",\n \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\",\n \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\",\n \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\",\n \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\",\n \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\",\n \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\",\n \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\",\n \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\",\n \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\",\n \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\",\n \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\",\n \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\",\n \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\",\n \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\",\n \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\",\n \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\",\n \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\",\n \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\",\n \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\",\n \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\",\n \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\",\n \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\",\n \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\",\n \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\",\n \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\",\n \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\",\n \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\",\n \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\",\n \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\",\n \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\",\n \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n\n// prettier-ignore\nconst MacRomanEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\",\n \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\",\n \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\",\n \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\",\n \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\",\n \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\",\n \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\",\n \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\",\n \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\",\n \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\",\n \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\",\n \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\",\n \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\",\n \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\",\n \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\",\n \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\",\n \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\",\n \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\",\n \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\",\n \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\",\n \"ogonek\", \"caron\"];\n\n// prettier-ignore\nconst StandardEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\",\n \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\",\n \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\",\n \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\",\n \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\",\n \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\",\n \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\",\n \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\",\n \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\",\n \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\",\n \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\",\n \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\",\n \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\",\n \"\", \"\", \"\"];\n\n// prettier-ignore\nconst WinAnsiEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\",\n \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\",\n \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\",\n \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\",\n \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\",\n \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\",\n \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\",\n \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\",\n \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\",\n \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\",\n \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\",\n \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\",\n \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\",\n \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\",\n \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\",\n \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\",\n \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\",\n \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\",\n \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\",\n \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\",\n \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\",\n \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\",\n \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\",\n \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\",\n \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\",\n \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\",\n \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\",\n \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\",\n \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\",\n \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\",\n \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\",\n \"ydieresis\"];\n\n// prettier-ignore\nconst SymbolSetEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\",\n \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\",\n \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\",\n \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\",\n \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\",\n \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\",\n \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\",\n \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\",\n \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\",\n \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\",\n \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\",\n \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\",\n \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\",\n \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\",\n \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\",\n \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\",\n \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\",\n \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\",\n \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\",\n \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\",\n \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\",\n \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\",\n \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\",\n \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\",\n \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\",\n \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\",\n \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\",\n \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\",\n \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\",\n \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\",\n \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\",\n \"bracerightbt\", \"\"];\n\n// prettier-ignore\nconst ZapfDingbatsEncoding = [\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\",\n \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\",\n \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\",\n \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\",\n \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\",\n \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\",\n \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\",\n \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\",\n \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\",\n \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\",\n \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\",\n \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\",\n \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\",\n \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\",\n \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\",\n \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\",\n \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\",\n \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\",\n \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\",\n \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\",\n \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\",\n \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case \"WinAnsiEncoding\":\n return WinAnsiEncoding;\n case \"StandardEncoding\":\n return StandardEncoding;\n case \"MacRomanEncoding\":\n return MacRomanEncoding;\n case \"SymbolSetEncoding\":\n return SymbolSetEncoding;\n case \"ZapfDingbatsEncoding\":\n return ZapfDingbatsEncoding;\n case \"ExpertEncoding\":\n return ExpertEncoding;\n case \"MacExpertEncoding\":\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\nexport {\n ExpertEncoding,\n getEncoding,\n MacRomanEncoding,\n StandardEncoding,\n SymbolSetEncoding,\n WinAnsiEncoding,\n ZapfDingbatsEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding, StandardEncoding } from \"./encodings.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { getUnicodeForGlyph } from \"./unicode.js\";\nimport { info } from \"../shared/util.js\";\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nconst SEAC_ANALYSIS_ENABLED = true;\n\nconst FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144,\n};\n\n// prettier-ignore\nconst MacStandardGlyphOrdering = [\n \".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\",\n \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\",\n \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\",\n \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\",\n \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\",\n \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\",\n \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\",\n \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\",\n \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\",\n \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\",\n \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\",\n \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\",\n \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\",\n \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\",\n \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\",\n \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\",\n \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\",\n \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\",\n \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\",\n \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\",\n \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\",\n \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\",\n \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\",\n \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\",\n \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\",\n \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\",\n \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\",\n \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\",\n \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\",\n \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\",\n \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\",\n \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\",\n \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\",\n \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\",\n \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\",\n \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n // The glyph name is non-standard, trying to recover.\n const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (const key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info(\"Unable to recover a standard glyph name for: \" + name);\n return name;\n}\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n const charCodeToGlyphId = Object.create(null);\n let glyphId, charCode, baseEncoding;\n const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.isInternalFont) {\n baseEncoding = builtInEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (properties.baseEncodingName) {\n // If a valid base encoding name was used, the mapping is initialized with\n // that.\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (isSymbolicFont) {\n // For a symbolic font the encoding should be the fonts built-in encoding.\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n // For non-symbolic fonts that don't have a base encoding the standard\n // encoding should be used.\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n\n // Lastly, merge in the differences.\n const differences = properties.differences;\n let glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n const glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\nexport {\n FontFlags,\n MacStandardGlyphOrdering,\n normalizeFontName,\n recoverGlyphName,\n SEAC_ANALYSIS_ENABLED,\n type1FontGlyphMapping,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport { getArrayLookupTableFactory } from \"./core_utils.js\";\n\nconst getGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"A\", 0x0041,\n \"AE\", 0x00c6,\n \"AEacute\", 0x01fc,\n \"AEmacron\", 0x01e2,\n \"AEsmall\", 0xf7e6,\n \"Aacute\", 0x00c1,\n \"Aacutesmall\", 0xf7e1,\n \"Abreve\", 0x0102,\n \"Abreveacute\", 0x1eae,\n \"Abrevecyrillic\", 0x04d0,\n \"Abrevedotbelow\", 0x1eb6,\n \"Abrevegrave\", 0x1eb0,\n \"Abrevehookabove\", 0x1eb2,\n \"Abrevetilde\", 0x1eb4,\n \"Acaron\", 0x01cd,\n \"Acircle\", 0x24b6,\n \"Acircumflex\", 0x00c2,\n \"Acircumflexacute\", 0x1ea4,\n \"Acircumflexdotbelow\", 0x1eac,\n \"Acircumflexgrave\", 0x1ea6,\n \"Acircumflexhookabove\", 0x1ea8,\n \"Acircumflexsmall\", 0xf7e2,\n \"Acircumflextilde\", 0x1eaa,\n \"Acute\", 0xf6c9,\n \"Acutesmall\", 0xf7b4,\n \"Acyrillic\", 0x0410,\n \"Adblgrave\", 0x0200,\n \"Adieresis\", 0x00c4,\n \"Adieresiscyrillic\", 0x04d2,\n \"Adieresismacron\", 0x01de,\n \"Adieresissmall\", 0xf7e4,\n \"Adotbelow\", 0x1ea0,\n \"Adotmacron\", 0x01e0,\n \"Agrave\", 0x00c0,\n \"Agravesmall\", 0xf7e0,\n \"Ahookabove\", 0x1ea2,\n \"Aiecyrillic\", 0x04d4,\n \"Ainvertedbreve\", 0x0202,\n \"Alpha\", 0x0391,\n \"Alphatonos\", 0x0386,\n \"Amacron\", 0x0100,\n \"Amonospace\", 0xff21,\n \"Aogonek\", 0x0104,\n \"Aring\", 0x00c5,\n \"Aringacute\", 0x01fa,\n \"Aringbelow\", 0x1e00,\n \"Aringsmall\", 0xf7e5,\n \"Asmall\", 0xf761,\n \"Atilde\", 0x00c3,\n \"Atildesmall\", 0xf7e3,\n \"Aybarmenian\", 0x0531,\n \"B\", 0x0042,\n \"Bcircle\", 0x24b7,\n \"Bdotaccent\", 0x1e02,\n \"Bdotbelow\", 0x1e04,\n \"Becyrillic\", 0x0411,\n \"Benarmenian\", 0x0532,\n \"Beta\", 0x0392,\n \"Bhook\", 0x0181,\n \"Blinebelow\", 0x1e06,\n \"Bmonospace\", 0xff22,\n \"Brevesmall\", 0xf6f4,\n \"Bsmall\", 0xf762,\n \"Btopbar\", 0x0182,\n \"C\", 0x0043,\n \"Caarmenian\", 0x053e,\n \"Cacute\", 0x0106,\n \"Caron\", 0xf6ca,\n \"Caronsmall\", 0xf6f5,\n \"Ccaron\", 0x010c,\n \"Ccedilla\", 0x00c7,\n \"Ccedillaacute\", 0x1e08,\n \"Ccedillasmall\", 0xf7e7,\n \"Ccircle\", 0x24b8,\n \"Ccircumflex\", 0x0108,\n \"Cdot\", 0x010a,\n \"Cdotaccent\", 0x010a,\n \"Cedillasmall\", 0xf7b8,\n \"Chaarmenian\", 0x0549,\n \"Cheabkhasiancyrillic\", 0x04bc,\n \"Checyrillic\", 0x0427,\n \"Chedescenderabkhasiancyrillic\", 0x04be,\n \"Chedescendercyrillic\", 0x04b6,\n \"Chedieresiscyrillic\", 0x04f4,\n \"Cheharmenian\", 0x0543,\n \"Chekhakassiancyrillic\", 0x04cb,\n \"Cheverticalstrokecyrillic\", 0x04b8,\n \"Chi\", 0x03a7,\n \"Chook\", 0x0187,\n \"Circumflexsmall\", 0xf6f6,\n \"Cmonospace\", 0xff23,\n \"Coarmenian\", 0x0551,\n \"Csmall\", 0xf763,\n \"D\", 0x0044,\n \"DZ\", 0x01f1,\n \"DZcaron\", 0x01c4,\n \"Daarmenian\", 0x0534,\n \"Dafrican\", 0x0189,\n \"Dcaron\", 0x010e,\n \"Dcedilla\", 0x1e10,\n \"Dcircle\", 0x24b9,\n \"Dcircumflexbelow\", 0x1e12,\n \"Dcroat\", 0x0110,\n \"Ddotaccent\", 0x1e0a,\n \"Ddotbelow\", 0x1e0c,\n \"Decyrillic\", 0x0414,\n \"Deicoptic\", 0x03ee,\n \"Delta\", 0x2206,\n \"Deltagreek\", 0x0394,\n \"Dhook\", 0x018a,\n \"Dieresis\", 0xf6cb,\n \"DieresisAcute\", 0xf6cc,\n \"DieresisGrave\", 0xf6cd,\n \"Dieresissmall\", 0xf7a8,\n \"Digammagreek\", 0x03dc,\n \"Djecyrillic\", 0x0402,\n \"Dlinebelow\", 0x1e0e,\n \"Dmonospace\", 0xff24,\n \"Dotaccentsmall\", 0xf6f7,\n \"Dslash\", 0x0110,\n \"Dsmall\", 0xf764,\n \"Dtopbar\", 0x018b,\n \"Dz\", 0x01f2,\n \"Dzcaron\", 0x01c5,\n \"Dzeabkhasiancyrillic\", 0x04e0,\n \"Dzecyrillic\", 0x0405,\n \"Dzhecyrillic\", 0x040f,\n \"E\", 0x0045,\n \"Eacute\", 0x00c9,\n \"Eacutesmall\", 0xf7e9,\n \"Ebreve\", 0x0114,\n \"Ecaron\", 0x011a,\n \"Ecedillabreve\", 0x1e1c,\n \"Echarmenian\", 0x0535,\n \"Ecircle\", 0x24ba,\n \"Ecircumflex\", 0x00ca,\n \"Ecircumflexacute\", 0x1ebe,\n \"Ecircumflexbelow\", 0x1e18,\n \"Ecircumflexdotbelow\", 0x1ec6,\n \"Ecircumflexgrave\", 0x1ec0,\n \"Ecircumflexhookabove\", 0x1ec2,\n \"Ecircumflexsmall\", 0xf7ea,\n \"Ecircumflextilde\", 0x1ec4,\n \"Ecyrillic\", 0x0404,\n \"Edblgrave\", 0x0204,\n \"Edieresis\", 0x00cb,\n \"Edieresissmall\", 0xf7eb,\n \"Edot\", 0x0116,\n \"Edotaccent\", 0x0116,\n \"Edotbelow\", 0x1eb8,\n \"Efcyrillic\", 0x0424,\n \"Egrave\", 0x00c8,\n \"Egravesmall\", 0xf7e8,\n \"Eharmenian\", 0x0537,\n \"Ehookabove\", 0x1eba,\n \"Eightroman\", 0x2167,\n \"Einvertedbreve\", 0x0206,\n \"Eiotifiedcyrillic\", 0x0464,\n \"Elcyrillic\", 0x041b,\n \"Elevenroman\", 0x216a,\n \"Emacron\", 0x0112,\n \"Emacronacute\", 0x1e16,\n \"Emacrongrave\", 0x1e14,\n \"Emcyrillic\", 0x041c,\n \"Emonospace\", 0xff25,\n \"Encyrillic\", 0x041d,\n \"Endescendercyrillic\", 0x04a2,\n \"Eng\", 0x014a,\n \"Enghecyrillic\", 0x04a4,\n \"Enhookcyrillic\", 0x04c7,\n \"Eogonek\", 0x0118,\n \"Eopen\", 0x0190,\n \"Epsilon\", 0x0395,\n \"Epsilontonos\", 0x0388,\n \"Ercyrillic\", 0x0420,\n \"Ereversed\", 0x018e,\n \"Ereversedcyrillic\", 0x042d,\n \"Escyrillic\", 0x0421,\n \"Esdescendercyrillic\", 0x04aa,\n \"Esh\", 0x01a9,\n \"Esmall\", 0xf765,\n \"Eta\", 0x0397,\n \"Etarmenian\", 0x0538,\n \"Etatonos\", 0x0389,\n \"Eth\", 0x00d0,\n \"Ethsmall\", 0xf7f0,\n \"Etilde\", 0x1ebc,\n \"Etildebelow\", 0x1e1a,\n \"Euro\", 0x20ac,\n \"Ezh\", 0x01b7,\n \"Ezhcaron\", 0x01ee,\n \"Ezhreversed\", 0x01b8,\n \"F\", 0x0046,\n \"Fcircle\", 0x24bb,\n \"Fdotaccent\", 0x1e1e,\n \"Feharmenian\", 0x0556,\n \"Feicoptic\", 0x03e4,\n \"Fhook\", 0x0191,\n \"Fitacyrillic\", 0x0472,\n \"Fiveroman\", 0x2164,\n \"Fmonospace\", 0xff26,\n \"Fourroman\", 0x2163,\n \"Fsmall\", 0xf766,\n \"G\", 0x0047,\n \"GBsquare\", 0x3387,\n \"Gacute\", 0x01f4,\n \"Gamma\", 0x0393,\n \"Gammaafrican\", 0x0194,\n \"Gangiacoptic\", 0x03ea,\n \"Gbreve\", 0x011e,\n \"Gcaron\", 0x01e6,\n \"Gcedilla\", 0x0122,\n \"Gcircle\", 0x24bc,\n \"Gcircumflex\", 0x011c,\n \"Gcommaaccent\", 0x0122,\n \"Gdot\", 0x0120,\n \"Gdotaccent\", 0x0120,\n \"Gecyrillic\", 0x0413,\n \"Ghadarmenian\", 0x0542,\n \"Ghemiddlehookcyrillic\", 0x0494,\n \"Ghestrokecyrillic\", 0x0492,\n \"Gheupturncyrillic\", 0x0490,\n \"Ghook\", 0x0193,\n \"Gimarmenian\", 0x0533,\n \"Gjecyrillic\", 0x0403,\n \"Gmacron\", 0x1e20,\n \"Gmonospace\", 0xff27,\n \"Grave\", 0xf6ce,\n \"Gravesmall\", 0xf760,\n \"Gsmall\", 0xf767,\n \"Gsmallhook\", 0x029b,\n \"Gstroke\", 0x01e4,\n \"H\", 0x0048,\n \"H18533\", 0x25cf,\n \"H18543\", 0x25aa,\n \"H18551\", 0x25ab,\n \"H22073\", 0x25a1,\n \"HPsquare\", 0x33cb,\n \"Haabkhasiancyrillic\", 0x04a8,\n \"Hadescendercyrillic\", 0x04b2,\n \"Hardsigncyrillic\", 0x042a,\n \"Hbar\", 0x0126,\n \"Hbrevebelow\", 0x1e2a,\n \"Hcedilla\", 0x1e28,\n \"Hcircle\", 0x24bd,\n \"Hcircumflex\", 0x0124,\n \"Hdieresis\", 0x1e26,\n \"Hdotaccent\", 0x1e22,\n \"Hdotbelow\", 0x1e24,\n \"Hmonospace\", 0xff28,\n \"Hoarmenian\", 0x0540,\n \"Horicoptic\", 0x03e8,\n \"Hsmall\", 0xf768,\n \"Hungarumlaut\", 0xf6cf,\n \"Hungarumlautsmall\", 0xf6f8,\n \"Hzsquare\", 0x3390,\n \"I\", 0x0049,\n \"IAcyrillic\", 0x042f,\n \"IJ\", 0x0132,\n \"IUcyrillic\", 0x042e,\n \"Iacute\", 0x00cd,\n \"Iacutesmall\", 0xf7ed,\n \"Ibreve\", 0x012c,\n \"Icaron\", 0x01cf,\n \"Icircle\", 0x24be,\n \"Icircumflex\", 0x00ce,\n \"Icircumflexsmall\", 0xf7ee,\n \"Icyrillic\", 0x0406,\n \"Idblgrave\", 0x0208,\n \"Idieresis\", 0x00cf,\n \"Idieresisacute\", 0x1e2e,\n \"Idieresiscyrillic\", 0x04e4,\n \"Idieresissmall\", 0xf7ef,\n \"Idot\", 0x0130,\n \"Idotaccent\", 0x0130,\n \"Idotbelow\", 0x1eca,\n \"Iebrevecyrillic\", 0x04d6,\n \"Iecyrillic\", 0x0415,\n \"Ifraktur\", 0x2111,\n \"Igrave\", 0x00cc,\n \"Igravesmall\", 0xf7ec,\n \"Ihookabove\", 0x1ec8,\n \"Iicyrillic\", 0x0418,\n \"Iinvertedbreve\", 0x020a,\n \"Iishortcyrillic\", 0x0419,\n \"Imacron\", 0x012a,\n \"Imacroncyrillic\", 0x04e2,\n \"Imonospace\", 0xff29,\n \"Iniarmenian\", 0x053b,\n \"Iocyrillic\", 0x0401,\n \"Iogonek\", 0x012e,\n \"Iota\", 0x0399,\n \"Iotaafrican\", 0x0196,\n \"Iotadieresis\", 0x03aa,\n \"Iotatonos\", 0x038a,\n \"Ismall\", 0xf769,\n \"Istroke\", 0x0197,\n \"Itilde\", 0x0128,\n \"Itildebelow\", 0x1e2c,\n \"Izhitsacyrillic\", 0x0474,\n \"Izhitsadblgravecyrillic\", 0x0476,\n \"J\", 0x004a,\n \"Jaarmenian\", 0x0541,\n \"Jcircle\", 0x24bf,\n \"Jcircumflex\", 0x0134,\n \"Jecyrillic\", 0x0408,\n \"Jheharmenian\", 0x054b,\n \"Jmonospace\", 0xff2a,\n \"Jsmall\", 0xf76a,\n \"K\", 0x004b,\n \"KBsquare\", 0x3385,\n \"KKsquare\", 0x33cd,\n \"Kabashkircyrillic\", 0x04a0,\n \"Kacute\", 0x1e30,\n \"Kacyrillic\", 0x041a,\n \"Kadescendercyrillic\", 0x049a,\n \"Kahookcyrillic\", 0x04c3,\n \"Kappa\", 0x039a,\n \"Kastrokecyrillic\", 0x049e,\n \"Kaverticalstrokecyrillic\", 0x049c,\n \"Kcaron\", 0x01e8,\n \"Kcedilla\", 0x0136,\n \"Kcircle\", 0x24c0,\n \"Kcommaaccent\", 0x0136,\n \"Kdotbelow\", 0x1e32,\n \"Keharmenian\", 0x0554,\n \"Kenarmenian\", 0x053f,\n \"Khacyrillic\", 0x0425,\n \"Kheicoptic\", 0x03e6,\n \"Khook\", 0x0198,\n \"Kjecyrillic\", 0x040c,\n \"Klinebelow\", 0x1e34,\n \"Kmonospace\", 0xff2b,\n \"Koppacyrillic\", 0x0480,\n \"Koppagreek\", 0x03de,\n \"Ksicyrillic\", 0x046e,\n \"Ksmall\", 0xf76b,\n \"L\", 0x004c,\n \"LJ\", 0x01c7,\n \"LL\", 0xf6bf,\n \"Lacute\", 0x0139,\n \"Lambda\", 0x039b,\n \"Lcaron\", 0x013d,\n \"Lcedilla\", 0x013b,\n \"Lcircle\", 0x24c1,\n \"Lcircumflexbelow\", 0x1e3c,\n \"Lcommaaccent\", 0x013b,\n \"Ldot\", 0x013f,\n \"Ldotaccent\", 0x013f,\n \"Ldotbelow\", 0x1e36,\n \"Ldotbelowmacron\", 0x1e38,\n \"Liwnarmenian\", 0x053c,\n \"Lj\", 0x01c8,\n \"Ljecyrillic\", 0x0409,\n \"Llinebelow\", 0x1e3a,\n \"Lmonospace\", 0xff2c,\n \"Lslash\", 0x0141,\n \"Lslashsmall\", 0xf6f9,\n \"Lsmall\", 0xf76c,\n \"M\", 0x004d,\n \"MBsquare\", 0x3386,\n \"Macron\", 0xf6d0,\n \"Macronsmall\", 0xf7af,\n \"Macute\", 0x1e3e,\n \"Mcircle\", 0x24c2,\n \"Mdotaccent\", 0x1e40,\n \"Mdotbelow\", 0x1e42,\n \"Menarmenian\", 0x0544,\n \"Mmonospace\", 0xff2d,\n \"Msmall\", 0xf76d,\n \"Mturned\", 0x019c,\n \"Mu\", 0x039c,\n \"N\", 0x004e,\n \"NJ\", 0x01ca,\n \"Nacute\", 0x0143,\n \"Ncaron\", 0x0147,\n \"Ncedilla\", 0x0145,\n \"Ncircle\", 0x24c3,\n \"Ncircumflexbelow\", 0x1e4a,\n \"Ncommaaccent\", 0x0145,\n \"Ndotaccent\", 0x1e44,\n \"Ndotbelow\", 0x1e46,\n \"Nhookleft\", 0x019d,\n \"Nineroman\", 0x2168,\n \"Nj\", 0x01cb,\n \"Njecyrillic\", 0x040a,\n \"Nlinebelow\", 0x1e48,\n \"Nmonospace\", 0xff2e,\n \"Nowarmenian\", 0x0546,\n \"Nsmall\", 0xf76e,\n \"Ntilde\", 0x00d1,\n \"Ntildesmall\", 0xf7f1,\n \"Nu\", 0x039d,\n \"O\", 0x004f,\n \"OE\", 0x0152,\n \"OEsmall\", 0xf6fa,\n \"Oacute\", 0x00d3,\n \"Oacutesmall\", 0xf7f3,\n \"Obarredcyrillic\", 0x04e8,\n \"Obarreddieresiscyrillic\", 0x04ea,\n \"Obreve\", 0x014e,\n \"Ocaron\", 0x01d1,\n \"Ocenteredtilde\", 0x019f,\n \"Ocircle\", 0x24c4,\n \"Ocircumflex\", 0x00d4,\n \"Ocircumflexacute\", 0x1ed0,\n \"Ocircumflexdotbelow\", 0x1ed8,\n \"Ocircumflexgrave\", 0x1ed2,\n \"Ocircumflexhookabove\", 0x1ed4,\n \"Ocircumflexsmall\", 0xf7f4,\n \"Ocircumflextilde\", 0x1ed6,\n \"Ocyrillic\", 0x041e,\n \"Odblacute\", 0x0150,\n \"Odblgrave\", 0x020c,\n \"Odieresis\", 0x00d6,\n \"Odieresiscyrillic\", 0x04e6,\n \"Odieresissmall\", 0xf7f6,\n \"Odotbelow\", 0x1ecc,\n \"Ogoneksmall\", 0xf6fb,\n \"Ograve\", 0x00d2,\n \"Ogravesmall\", 0xf7f2,\n \"Oharmenian\", 0x0555,\n \"Ohm\", 0x2126,\n \"Ohookabove\", 0x1ece,\n \"Ohorn\", 0x01a0,\n \"Ohornacute\", 0x1eda,\n \"Ohorndotbelow\", 0x1ee2,\n \"Ohorngrave\", 0x1edc,\n \"Ohornhookabove\", 0x1ede,\n \"Ohorntilde\", 0x1ee0,\n \"Ohungarumlaut\", 0x0150,\n \"Oi\", 0x01a2,\n \"Oinvertedbreve\", 0x020e,\n \"Omacron\", 0x014c,\n \"Omacronacute\", 0x1e52,\n \"Omacrongrave\", 0x1e50,\n \"Omega\", 0x2126,\n \"Omegacyrillic\", 0x0460,\n \"Omegagreek\", 0x03a9,\n \"Omegaroundcyrillic\", 0x047a,\n \"Omegatitlocyrillic\", 0x047c,\n \"Omegatonos\", 0x038f,\n \"Omicron\", 0x039f,\n \"Omicrontonos\", 0x038c,\n \"Omonospace\", 0xff2f,\n \"Oneroman\", 0x2160,\n \"Oogonek\", 0x01ea,\n \"Oogonekmacron\", 0x01ec,\n \"Oopen\", 0x0186,\n \"Oslash\", 0x00d8,\n \"Oslashacute\", 0x01fe,\n \"Oslashsmall\", 0xf7f8,\n \"Osmall\", 0xf76f,\n \"Ostrokeacute\", 0x01fe,\n \"Otcyrillic\", 0x047e,\n \"Otilde\", 0x00d5,\n \"Otildeacute\", 0x1e4c,\n \"Otildedieresis\", 0x1e4e,\n \"Otildesmall\", 0xf7f5,\n \"P\", 0x0050,\n \"Pacute\", 0x1e54,\n \"Pcircle\", 0x24c5,\n \"Pdotaccent\", 0x1e56,\n \"Pecyrillic\", 0x041f,\n \"Peharmenian\", 0x054a,\n \"Pemiddlehookcyrillic\", 0x04a6,\n \"Phi\", 0x03a6,\n \"Phook\", 0x01a4,\n \"Pi\", 0x03a0,\n \"Piwrarmenian\", 0x0553,\n \"Pmonospace\", 0xff30,\n \"Psi\", 0x03a8,\n \"Psicyrillic\", 0x0470,\n \"Psmall\", 0xf770,\n \"Q\", 0x0051,\n \"Qcircle\", 0x24c6,\n \"Qmonospace\", 0xff31,\n \"Qsmall\", 0xf771,\n \"R\", 0x0052,\n \"Raarmenian\", 0x054c,\n \"Racute\", 0x0154,\n \"Rcaron\", 0x0158,\n \"Rcedilla\", 0x0156,\n \"Rcircle\", 0x24c7,\n \"Rcommaaccent\", 0x0156,\n \"Rdblgrave\", 0x0210,\n \"Rdotaccent\", 0x1e58,\n \"Rdotbelow\", 0x1e5a,\n \"Rdotbelowmacron\", 0x1e5c,\n \"Reharmenian\", 0x0550,\n \"Rfraktur\", 0x211c,\n \"Rho\", 0x03a1,\n \"Ringsmall\", 0xf6fc,\n \"Rinvertedbreve\", 0x0212,\n \"Rlinebelow\", 0x1e5e,\n \"Rmonospace\", 0xff32,\n \"Rsmall\", 0xf772,\n \"Rsmallinverted\", 0x0281,\n \"Rsmallinvertedsuperior\", 0x02b6,\n \"S\", 0x0053,\n \"SF010000\", 0x250c,\n \"SF020000\", 0x2514,\n \"SF030000\", 0x2510,\n \"SF040000\", 0x2518,\n \"SF050000\", 0x253c,\n \"SF060000\", 0x252c,\n \"SF070000\", 0x2534,\n \"SF080000\", 0x251c,\n \"SF090000\", 0x2524,\n \"SF100000\", 0x2500,\n \"SF110000\", 0x2502,\n \"SF190000\", 0x2561,\n \"SF200000\", 0x2562,\n \"SF210000\", 0x2556,\n \"SF220000\", 0x2555,\n \"SF230000\", 0x2563,\n \"SF240000\", 0x2551,\n \"SF250000\", 0x2557,\n \"SF260000\", 0x255d,\n \"SF270000\", 0x255c,\n \"SF280000\", 0x255b,\n \"SF360000\", 0x255e,\n \"SF370000\", 0x255f,\n \"SF380000\", 0x255a,\n \"SF390000\", 0x2554,\n \"SF400000\", 0x2569,\n \"SF410000\", 0x2566,\n \"SF420000\", 0x2560,\n \"SF430000\", 0x2550,\n \"SF440000\", 0x256c,\n \"SF450000\", 0x2567,\n \"SF460000\", 0x2568,\n \"SF470000\", 0x2564,\n \"SF480000\", 0x2565,\n \"SF490000\", 0x2559,\n \"SF500000\", 0x2558,\n \"SF510000\", 0x2552,\n \"SF520000\", 0x2553,\n \"SF530000\", 0x256b,\n \"SF540000\", 0x256a,\n \"Sacute\", 0x015a,\n \"Sacutedotaccent\", 0x1e64,\n \"Sampigreek\", 0x03e0,\n \"Scaron\", 0x0160,\n \"Scarondotaccent\", 0x1e66,\n \"Scaronsmall\", 0xf6fd,\n \"Scedilla\", 0x015e,\n \"Schwa\", 0x018f,\n \"Schwacyrillic\", 0x04d8,\n \"Schwadieresiscyrillic\", 0x04da,\n \"Scircle\", 0x24c8,\n \"Scircumflex\", 0x015c,\n \"Scommaaccent\", 0x0218,\n \"Sdotaccent\", 0x1e60,\n \"Sdotbelow\", 0x1e62,\n \"Sdotbelowdotaccent\", 0x1e68,\n \"Seharmenian\", 0x054d,\n \"Sevenroman\", 0x2166,\n \"Shaarmenian\", 0x0547,\n \"Shacyrillic\", 0x0428,\n \"Shchacyrillic\", 0x0429,\n \"Sheicoptic\", 0x03e2,\n \"Shhacyrillic\", 0x04ba,\n \"Shimacoptic\", 0x03ec,\n \"Sigma\", 0x03a3,\n \"Sixroman\", 0x2165,\n \"Smonospace\", 0xff33,\n \"Softsigncyrillic\", 0x042c,\n \"Ssmall\", 0xf773,\n \"Stigmagreek\", 0x03da,\n \"T\", 0x0054,\n \"Tau\", 0x03a4,\n \"Tbar\", 0x0166,\n \"Tcaron\", 0x0164,\n \"Tcedilla\", 0x0162,\n \"Tcircle\", 0x24c9,\n \"Tcircumflexbelow\", 0x1e70,\n \"Tcommaaccent\", 0x0162,\n \"Tdotaccent\", 0x1e6a,\n \"Tdotbelow\", 0x1e6c,\n \"Tecyrillic\", 0x0422,\n \"Tedescendercyrillic\", 0x04ac,\n \"Tenroman\", 0x2169,\n \"Tetsecyrillic\", 0x04b4,\n \"Theta\", 0x0398,\n \"Thook\", 0x01ac,\n \"Thorn\", 0x00de,\n \"Thornsmall\", 0xf7fe,\n \"Threeroman\", 0x2162,\n \"Tildesmall\", 0xf6fe,\n \"Tiwnarmenian\", 0x054f,\n \"Tlinebelow\", 0x1e6e,\n \"Tmonospace\", 0xff34,\n \"Toarmenian\", 0x0539,\n \"Tonefive\", 0x01bc,\n \"Tonesix\", 0x0184,\n \"Tonetwo\", 0x01a7,\n \"Tretroflexhook\", 0x01ae,\n \"Tsecyrillic\", 0x0426,\n \"Tshecyrillic\", 0x040b,\n \"Tsmall\", 0xf774,\n \"Twelveroman\", 0x216b,\n \"Tworoman\", 0x2161,\n \"U\", 0x0055,\n \"Uacute\", 0x00da,\n \"Uacutesmall\", 0xf7fa,\n \"Ubreve\", 0x016c,\n \"Ucaron\", 0x01d3,\n \"Ucircle\", 0x24ca,\n \"Ucircumflex\", 0x00db,\n \"Ucircumflexbelow\", 0x1e76,\n \"Ucircumflexsmall\", 0xf7fb,\n \"Ucyrillic\", 0x0423,\n \"Udblacute\", 0x0170,\n \"Udblgrave\", 0x0214,\n \"Udieresis\", 0x00dc,\n \"Udieresisacute\", 0x01d7,\n \"Udieresisbelow\", 0x1e72,\n \"Udieresiscaron\", 0x01d9,\n \"Udieresiscyrillic\", 0x04f0,\n \"Udieresisgrave\", 0x01db,\n \"Udieresismacron\", 0x01d5,\n \"Udieresissmall\", 0xf7fc,\n \"Udotbelow\", 0x1ee4,\n \"Ugrave\", 0x00d9,\n \"Ugravesmall\", 0xf7f9,\n \"Uhookabove\", 0x1ee6,\n \"Uhorn\", 0x01af,\n \"Uhornacute\", 0x1ee8,\n \"Uhorndotbelow\", 0x1ef0,\n \"Uhorngrave\", 0x1eea,\n \"Uhornhookabove\", 0x1eec,\n \"Uhorntilde\", 0x1eee,\n \"Uhungarumlaut\", 0x0170,\n \"Uhungarumlautcyrillic\", 0x04f2,\n \"Uinvertedbreve\", 0x0216,\n \"Ukcyrillic\", 0x0478,\n \"Umacron\", 0x016a,\n \"Umacroncyrillic\", 0x04ee,\n \"Umacrondieresis\", 0x1e7a,\n \"Umonospace\", 0xff35,\n \"Uogonek\", 0x0172,\n \"Upsilon\", 0x03a5,\n \"Upsilon1\", 0x03d2,\n \"Upsilonacutehooksymbolgreek\", 0x03d3,\n \"Upsilonafrican\", 0x01b1,\n \"Upsilondieresis\", 0x03ab,\n \"Upsilondieresishooksymbolgreek\", 0x03d4,\n \"Upsilonhooksymbol\", 0x03d2,\n \"Upsilontonos\", 0x038e,\n \"Uring\", 0x016e,\n \"Ushortcyrillic\", 0x040e,\n \"Usmall\", 0xf775,\n \"Ustraightcyrillic\", 0x04ae,\n \"Ustraightstrokecyrillic\", 0x04b0,\n \"Utilde\", 0x0168,\n \"Utildeacute\", 0x1e78,\n \"Utildebelow\", 0x1e74,\n \"V\", 0x0056,\n \"Vcircle\", 0x24cb,\n \"Vdotbelow\", 0x1e7e,\n \"Vecyrillic\", 0x0412,\n \"Vewarmenian\", 0x054e,\n \"Vhook\", 0x01b2,\n \"Vmonospace\", 0xff36,\n \"Voarmenian\", 0x0548,\n \"Vsmall\", 0xf776,\n \"Vtilde\", 0x1e7c,\n \"W\", 0x0057,\n \"Wacute\", 0x1e82,\n \"Wcircle\", 0x24cc,\n \"Wcircumflex\", 0x0174,\n \"Wdieresis\", 0x1e84,\n \"Wdotaccent\", 0x1e86,\n \"Wdotbelow\", 0x1e88,\n \"Wgrave\", 0x1e80,\n \"Wmonospace\", 0xff37,\n \"Wsmall\", 0xf777,\n \"X\", 0x0058,\n \"Xcircle\", 0x24cd,\n \"Xdieresis\", 0x1e8c,\n \"Xdotaccent\", 0x1e8a,\n \"Xeharmenian\", 0x053d,\n \"Xi\", 0x039e,\n \"Xmonospace\", 0xff38,\n \"Xsmall\", 0xf778,\n \"Y\", 0x0059,\n \"Yacute\", 0x00dd,\n \"Yacutesmall\", 0xf7fd,\n \"Yatcyrillic\", 0x0462,\n \"Ycircle\", 0x24ce,\n \"Ycircumflex\", 0x0176,\n \"Ydieresis\", 0x0178,\n \"Ydieresissmall\", 0xf7ff,\n \"Ydotaccent\", 0x1e8e,\n \"Ydotbelow\", 0x1ef4,\n \"Yericyrillic\", 0x042b,\n \"Yerudieresiscyrillic\", 0x04f8,\n \"Ygrave\", 0x1ef2,\n \"Yhook\", 0x01b3,\n \"Yhookabove\", 0x1ef6,\n \"Yiarmenian\", 0x0545,\n \"Yicyrillic\", 0x0407,\n \"Yiwnarmenian\", 0x0552,\n \"Ymonospace\", 0xff39,\n \"Ysmall\", 0xf779,\n \"Ytilde\", 0x1ef8,\n \"Yusbigcyrillic\", 0x046a,\n \"Yusbigiotifiedcyrillic\", 0x046c,\n \"Yuslittlecyrillic\", 0x0466,\n \"Yuslittleiotifiedcyrillic\", 0x0468,\n \"Z\", 0x005a,\n \"Zaarmenian\", 0x0536,\n \"Zacute\", 0x0179,\n \"Zcaron\", 0x017d,\n \"Zcaronsmall\", 0xf6ff,\n \"Zcircle\", 0x24cf,\n \"Zcircumflex\", 0x1e90,\n \"Zdot\", 0x017b,\n \"Zdotaccent\", 0x017b,\n \"Zdotbelow\", 0x1e92,\n \"Zecyrillic\", 0x0417,\n \"Zedescendercyrillic\", 0x0498,\n \"Zedieresiscyrillic\", 0x04de,\n \"Zeta\", 0x0396,\n \"Zhearmenian\", 0x053a,\n \"Zhebrevecyrillic\", 0x04c1,\n \"Zhecyrillic\", 0x0416,\n \"Zhedescendercyrillic\", 0x0496,\n \"Zhedieresiscyrillic\", 0x04dc,\n \"Zlinebelow\", 0x1e94,\n \"Zmonospace\", 0xff3a,\n \"Zsmall\", 0xf77a,\n \"Zstroke\", 0x01b5,\n \"a\", 0x0061,\n \"aabengali\", 0x0986,\n \"aacute\", 0x00e1,\n \"aadeva\", 0x0906,\n \"aagujarati\", 0x0a86,\n \"aagurmukhi\", 0x0a06,\n \"aamatragurmukhi\", 0x0a3e,\n \"aarusquare\", 0x3303,\n \"aavowelsignbengali\", 0x09be,\n \"aavowelsigndeva\", 0x093e,\n \"aavowelsigngujarati\", 0x0abe,\n \"abbreviationmarkarmenian\", 0x055f,\n \"abbreviationsigndeva\", 0x0970,\n \"abengali\", 0x0985,\n \"abopomofo\", 0x311a,\n \"abreve\", 0x0103,\n \"abreveacute\", 0x1eaf,\n \"abrevecyrillic\", 0x04d1,\n \"abrevedotbelow\", 0x1eb7,\n \"abrevegrave\", 0x1eb1,\n \"abrevehookabove\", 0x1eb3,\n \"abrevetilde\", 0x1eb5,\n \"acaron\", 0x01ce,\n \"acircle\", 0x24d0,\n \"acircumflex\", 0x00e2,\n \"acircumflexacute\", 0x1ea5,\n \"acircumflexdotbelow\", 0x1ead,\n \"acircumflexgrave\", 0x1ea7,\n \"acircumflexhookabove\", 0x1ea9,\n \"acircumflextilde\", 0x1eab,\n \"acute\", 0x00b4,\n \"acutebelowcmb\", 0x0317,\n \"acutecmb\", 0x0301,\n \"acutecomb\", 0x0301,\n \"acutedeva\", 0x0954,\n \"acutelowmod\", 0x02cf,\n \"acutetonecmb\", 0x0341,\n \"acyrillic\", 0x0430,\n \"adblgrave\", 0x0201,\n \"addakgurmukhi\", 0x0a71,\n \"adeva\", 0x0905,\n \"adieresis\", 0x00e4,\n \"adieresiscyrillic\", 0x04d3,\n \"adieresismacron\", 0x01df,\n \"adotbelow\", 0x1ea1,\n \"adotmacron\", 0x01e1,\n \"ae\", 0x00e6,\n \"aeacute\", 0x01fd,\n \"aekorean\", 0x3150,\n \"aemacron\", 0x01e3,\n \"afii00208\", 0x2015,\n \"afii08941\", 0x20a4,\n \"afii10017\", 0x0410,\n \"afii10018\", 0x0411,\n \"afii10019\", 0x0412,\n \"afii10020\", 0x0413,\n \"afii10021\", 0x0414,\n \"afii10022\", 0x0415,\n \"afii10023\", 0x0401,\n \"afii10024\", 0x0416,\n \"afii10025\", 0x0417,\n \"afii10026\", 0x0418,\n \"afii10027\", 0x0419,\n \"afii10028\", 0x041a,\n \"afii10029\", 0x041b,\n \"afii10030\", 0x041c,\n \"afii10031\", 0x041d,\n \"afii10032\", 0x041e,\n \"afii10033\", 0x041f,\n \"afii10034\", 0x0420,\n \"afii10035\", 0x0421,\n \"afii10036\", 0x0422,\n \"afii10037\", 0x0423,\n \"afii10038\", 0x0424,\n \"afii10039\", 0x0425,\n \"afii10040\", 0x0426,\n \"afii10041\", 0x0427,\n \"afii10042\", 0x0428,\n \"afii10043\", 0x0429,\n \"afii10044\", 0x042a,\n \"afii10045\", 0x042b,\n \"afii10046\", 0x042c,\n \"afii10047\", 0x042d,\n \"afii10048\", 0x042e,\n \"afii10049\", 0x042f,\n \"afii10050\", 0x0490,\n \"afii10051\", 0x0402,\n \"afii10052\", 0x0403,\n \"afii10053\", 0x0404,\n \"afii10054\", 0x0405,\n \"afii10055\", 0x0406,\n \"afii10056\", 0x0407,\n \"afii10057\", 0x0408,\n \"afii10058\", 0x0409,\n \"afii10059\", 0x040a,\n \"afii10060\", 0x040b,\n \"afii10061\", 0x040c,\n \"afii10062\", 0x040e,\n \"afii10063\", 0xf6c4,\n \"afii10064\", 0xf6c5,\n \"afii10065\", 0x0430,\n \"afii10066\", 0x0431,\n \"afii10067\", 0x0432,\n \"afii10068\", 0x0433,\n \"afii10069\", 0x0434,\n \"afii10070\", 0x0435,\n \"afii10071\", 0x0451,\n \"afii10072\", 0x0436,\n \"afii10073\", 0x0437,\n \"afii10074\", 0x0438,\n \"afii10075\", 0x0439,\n \"afii10076\", 0x043a,\n \"afii10077\", 0x043b,\n \"afii10078\", 0x043c,\n \"afii10079\", 0x043d,\n \"afii10080\", 0x043e,\n \"afii10081\", 0x043f,\n \"afii10082\", 0x0440,\n \"afii10083\", 0x0441,\n \"afii10084\", 0x0442,\n \"afii10085\", 0x0443,\n \"afii10086\", 0x0444,\n \"afii10087\", 0x0445,\n \"afii10088\", 0x0446,\n \"afii10089\", 0x0447,\n \"afii10090\", 0x0448,\n \"afii10091\", 0x0449,\n \"afii10092\", 0x044a,\n \"afii10093\", 0x044b,\n \"afii10094\", 0x044c,\n \"afii10095\", 0x044d,\n \"afii10096\", 0x044e,\n \"afii10097\", 0x044f,\n \"afii10098\", 0x0491,\n \"afii10099\", 0x0452,\n \"afii10100\", 0x0453,\n \"afii10101\", 0x0454,\n \"afii10102\", 0x0455,\n \"afii10103\", 0x0456,\n \"afii10104\", 0x0457,\n \"afii10105\", 0x0458,\n \"afii10106\", 0x0459,\n \"afii10107\", 0x045a,\n \"afii10108\", 0x045b,\n \"afii10109\", 0x045c,\n \"afii10110\", 0x045e,\n \"afii10145\", 0x040f,\n \"afii10146\", 0x0462,\n \"afii10147\", 0x0472,\n \"afii10148\", 0x0474,\n \"afii10192\", 0xf6c6,\n \"afii10193\", 0x045f,\n \"afii10194\", 0x0463,\n \"afii10195\", 0x0473,\n \"afii10196\", 0x0475,\n \"afii10831\", 0xf6c7,\n \"afii10832\", 0xf6c8,\n \"afii10846\", 0x04d9,\n \"afii299\", 0x200e,\n \"afii300\", 0x200f,\n \"afii301\", 0x200d,\n \"afii57381\", 0x066a,\n \"afii57388\", 0x060c,\n \"afii57392\", 0x0660,\n \"afii57393\", 0x0661,\n \"afii57394\", 0x0662,\n \"afii57395\", 0x0663,\n \"afii57396\", 0x0664,\n \"afii57397\", 0x0665,\n \"afii57398\", 0x0666,\n \"afii57399\", 0x0667,\n \"afii57400\", 0x0668,\n \"afii57401\", 0x0669,\n \"afii57403\", 0x061b,\n \"afii57407\", 0x061f,\n \"afii57409\", 0x0621,\n \"afii57410\", 0x0622,\n \"afii57411\", 0x0623,\n \"afii57412\", 0x0624,\n \"afii57413\", 0x0625,\n \"afii57414\", 0x0626,\n \"afii57415\", 0x0627,\n \"afii57416\", 0x0628,\n \"afii57417\", 0x0629,\n \"afii57418\", 0x062a,\n \"afii57419\", 0x062b,\n \"afii57420\", 0x062c,\n \"afii57421\", 0x062d,\n \"afii57422\", 0x062e,\n \"afii57423\", 0x062f,\n \"afii57424\", 0x0630,\n \"afii57425\", 0x0631,\n \"afii57426\", 0x0632,\n \"afii57427\", 0x0633,\n \"afii57428\", 0x0634,\n \"afii57429\", 0x0635,\n \"afii57430\", 0x0636,\n \"afii57431\", 0x0637,\n \"afii57432\", 0x0638,\n \"afii57433\", 0x0639,\n \"afii57434\", 0x063a,\n \"afii57440\", 0x0640,\n \"afii57441\", 0x0641,\n \"afii57442\", 0x0642,\n \"afii57443\", 0x0643,\n \"afii57444\", 0x0644,\n \"afii57445\", 0x0645,\n \"afii57446\", 0x0646,\n \"afii57448\", 0x0648,\n \"afii57449\", 0x0649,\n \"afii57450\", 0x064a,\n \"afii57451\", 0x064b,\n \"afii57452\", 0x064c,\n \"afii57453\", 0x064d,\n \"afii57454\", 0x064e,\n \"afii57455\", 0x064f,\n \"afii57456\", 0x0650,\n \"afii57457\", 0x0651,\n \"afii57458\", 0x0652,\n \"afii57470\", 0x0647,\n \"afii57505\", 0x06a4,\n \"afii57506\", 0x067e,\n \"afii57507\", 0x0686,\n \"afii57508\", 0x0698,\n \"afii57509\", 0x06af,\n \"afii57511\", 0x0679,\n \"afii57512\", 0x0688,\n \"afii57513\", 0x0691,\n \"afii57514\", 0x06ba,\n \"afii57519\", 0x06d2,\n \"afii57534\", 0x06d5,\n \"afii57636\", 0x20aa,\n \"afii57645\", 0x05be,\n \"afii57658\", 0x05c3,\n \"afii57664\", 0x05d0,\n \"afii57665\", 0x05d1,\n \"afii57666\", 0x05d2,\n \"afii57667\", 0x05d3,\n \"afii57668\", 0x05d4,\n \"afii57669\", 0x05d5,\n \"afii57670\", 0x05d6,\n \"afii57671\", 0x05d7,\n \"afii57672\", 0x05d8,\n \"afii57673\", 0x05d9,\n \"afii57674\", 0x05da,\n \"afii57675\", 0x05db,\n \"afii57676\", 0x05dc,\n \"afii57677\", 0x05dd,\n \"afii57678\", 0x05de,\n \"afii57679\", 0x05df,\n \"afii57680\", 0x05e0,\n \"afii57681\", 0x05e1,\n \"afii57682\", 0x05e2,\n \"afii57683\", 0x05e3,\n \"afii57684\", 0x05e4,\n \"afii57685\", 0x05e5,\n \"afii57686\", 0x05e6,\n \"afii57687\", 0x05e7,\n \"afii57688\", 0x05e8,\n \"afii57689\", 0x05e9,\n \"afii57690\", 0x05ea,\n \"afii57694\", 0xfb2a,\n \"afii57695\", 0xfb2b,\n \"afii57700\", 0xfb4b,\n \"afii57705\", 0xfb1f,\n \"afii57716\", 0x05f0,\n \"afii57717\", 0x05f1,\n \"afii57718\", 0x05f2,\n \"afii57723\", 0xfb35,\n \"afii57793\", 0x05b4,\n \"afii57794\", 0x05b5,\n \"afii57795\", 0x05b6,\n \"afii57796\", 0x05bb,\n \"afii57797\", 0x05b8,\n \"afii57798\", 0x05b7,\n \"afii57799\", 0x05b0,\n \"afii57800\", 0x05b2,\n \"afii57801\", 0x05b1,\n \"afii57802\", 0x05b3,\n \"afii57803\", 0x05c2,\n \"afii57804\", 0x05c1,\n \"afii57806\", 0x05b9,\n \"afii57807\", 0x05bc,\n \"afii57839\", 0x05bd,\n \"afii57841\", 0x05bf,\n \"afii57842\", 0x05c0,\n \"afii57929\", 0x02bc,\n \"afii61248\", 0x2105,\n \"afii61289\", 0x2113,\n \"afii61352\", 0x2116,\n \"afii61573\", 0x202c,\n \"afii61574\", 0x202d,\n \"afii61575\", 0x202e,\n \"afii61664\", 0x200c,\n \"afii63167\", 0x066d,\n \"afii64937\", 0x02bd,\n \"agrave\", 0x00e0,\n \"agujarati\", 0x0a85,\n \"agurmukhi\", 0x0a05,\n \"ahiragana\", 0x3042,\n \"ahookabove\", 0x1ea3,\n \"aibengali\", 0x0990,\n \"aibopomofo\", 0x311e,\n \"aideva\", 0x0910,\n \"aiecyrillic\", 0x04d5,\n \"aigujarati\", 0x0a90,\n \"aigurmukhi\", 0x0a10,\n \"aimatragurmukhi\", 0x0a48,\n \"ainarabic\", 0x0639,\n \"ainfinalarabic\", 0xfeca,\n \"aininitialarabic\", 0xfecb,\n \"ainmedialarabic\", 0xfecc,\n \"ainvertedbreve\", 0x0203,\n \"aivowelsignbengali\", 0x09c8,\n \"aivowelsigndeva\", 0x0948,\n \"aivowelsigngujarati\", 0x0ac8,\n \"akatakana\", 0x30a2,\n \"akatakanahalfwidth\", 0xff71,\n \"akorean\", 0x314f,\n \"alef\", 0x05d0,\n \"alefarabic\", 0x0627,\n \"alefdageshhebrew\", 0xfb30,\n \"aleffinalarabic\", 0xfe8e,\n \"alefhamzaabovearabic\", 0x0623,\n \"alefhamzaabovefinalarabic\", 0xfe84,\n \"alefhamzabelowarabic\", 0x0625,\n \"alefhamzabelowfinalarabic\", 0xfe88,\n \"alefhebrew\", 0x05d0,\n \"aleflamedhebrew\", 0xfb4f,\n \"alefmaddaabovearabic\", 0x0622,\n \"alefmaddaabovefinalarabic\", 0xfe82,\n \"alefmaksuraarabic\", 0x0649,\n \"alefmaksurafinalarabic\", 0xfef0,\n \"alefmaksurainitialarabic\", 0xfef3,\n \"alefmaksuramedialarabic\", 0xfef4,\n \"alefpatahhebrew\", 0xfb2e,\n \"alefqamatshebrew\", 0xfb2f,\n \"aleph\", 0x2135,\n \"allequal\", 0x224c,\n \"alpha\", 0x03b1,\n \"alphatonos\", 0x03ac,\n \"amacron\", 0x0101,\n \"amonospace\", 0xff41,\n \"ampersand\", 0x0026,\n \"ampersandmonospace\", 0xff06,\n \"ampersandsmall\", 0xf726,\n \"amsquare\", 0x33c2,\n \"anbopomofo\", 0x3122,\n \"angbopomofo\", 0x3124,\n \"angbracketleft\", 0x3008, // Glyph is missing from Adobe's original list.\n \"angbracketright\", 0x3009, // Glyph is missing from Adobe's original list.\n \"angkhankhuthai\", 0x0e5a,\n \"angle\", 0x2220,\n \"anglebracketleft\", 0x3008,\n \"anglebracketleftvertical\", 0xfe3f,\n \"anglebracketright\", 0x3009,\n \"anglebracketrightvertical\", 0xfe40,\n \"angleleft\", 0x2329,\n \"angleright\", 0x232a,\n \"angstrom\", 0x212b,\n \"anoteleia\", 0x0387,\n \"anudattadeva\", 0x0952,\n \"anusvarabengali\", 0x0982,\n \"anusvaradeva\", 0x0902,\n \"anusvaragujarati\", 0x0a82,\n \"aogonek\", 0x0105,\n \"apaatosquare\", 0x3300,\n \"aparen\", 0x249c,\n \"apostrophearmenian\", 0x055a,\n \"apostrophemod\", 0x02bc,\n \"apple\", 0xf8ff,\n \"approaches\", 0x2250,\n \"approxequal\", 0x2248,\n \"approxequalorimage\", 0x2252,\n \"approximatelyequal\", 0x2245,\n \"araeaekorean\", 0x318e,\n \"araeakorean\", 0x318d,\n \"arc\", 0x2312,\n \"arighthalfring\", 0x1e9a,\n \"aring\", 0x00e5,\n \"aringacute\", 0x01fb,\n \"aringbelow\", 0x1e01,\n \"arrowboth\", 0x2194,\n \"arrowdashdown\", 0x21e3,\n \"arrowdashleft\", 0x21e0,\n \"arrowdashright\", 0x21e2,\n \"arrowdashup\", 0x21e1,\n \"arrowdblboth\", 0x21d4,\n \"arrowdbldown\", 0x21d3,\n \"arrowdblleft\", 0x21d0,\n \"arrowdblright\", 0x21d2,\n \"arrowdblup\", 0x21d1,\n \"arrowdown\", 0x2193,\n \"arrowdownleft\", 0x2199,\n \"arrowdownright\", 0x2198,\n \"arrowdownwhite\", 0x21e9,\n \"arrowheaddownmod\", 0x02c5,\n \"arrowheadleftmod\", 0x02c2,\n \"arrowheadrightmod\", 0x02c3,\n \"arrowheadupmod\", 0x02c4,\n \"arrowhorizex\", 0xf8e7,\n \"arrowleft\", 0x2190,\n \"arrowleftdbl\", 0x21d0,\n \"arrowleftdblstroke\", 0x21cd,\n \"arrowleftoverright\", 0x21c6,\n \"arrowleftwhite\", 0x21e6,\n \"arrowright\", 0x2192,\n \"arrowrightdblstroke\", 0x21cf,\n \"arrowrightheavy\", 0x279e,\n \"arrowrightoverleft\", 0x21c4,\n \"arrowrightwhite\", 0x21e8,\n \"arrowtableft\", 0x21e4,\n \"arrowtabright\", 0x21e5,\n \"arrowup\", 0x2191,\n \"arrowupdn\", 0x2195,\n \"arrowupdnbse\", 0x21a8,\n \"arrowupdownbase\", 0x21a8,\n \"arrowupleft\", 0x2196,\n \"arrowupleftofdown\", 0x21c5,\n \"arrowupright\", 0x2197,\n \"arrowupwhite\", 0x21e7,\n \"arrowvertex\", 0xf8e6,\n \"asciicircum\", 0x005e,\n \"asciicircummonospace\", 0xff3e,\n \"asciitilde\", 0x007e,\n \"asciitildemonospace\", 0xff5e,\n \"ascript\", 0x0251,\n \"ascriptturned\", 0x0252,\n \"asmallhiragana\", 0x3041,\n \"asmallkatakana\", 0x30a1,\n \"asmallkatakanahalfwidth\", 0xff67,\n \"asterisk\", 0x002a,\n \"asteriskaltonearabic\", 0x066d,\n \"asteriskarabic\", 0x066d,\n \"asteriskmath\", 0x2217,\n \"asteriskmonospace\", 0xff0a,\n \"asterisksmall\", 0xfe61,\n \"asterism\", 0x2042,\n \"asuperior\", 0xf6e9,\n \"asymptoticallyequal\", 0x2243,\n \"at\", 0x0040,\n \"atilde\", 0x00e3,\n \"atmonospace\", 0xff20,\n \"atsmall\", 0xfe6b,\n \"aturned\", 0x0250,\n \"aubengali\", 0x0994,\n \"aubopomofo\", 0x3120,\n \"audeva\", 0x0914,\n \"augujarati\", 0x0a94,\n \"augurmukhi\", 0x0a14,\n \"aulengthmarkbengali\", 0x09d7,\n \"aumatragurmukhi\", 0x0a4c,\n \"auvowelsignbengali\", 0x09cc,\n \"auvowelsigndeva\", 0x094c,\n \"auvowelsigngujarati\", 0x0acc,\n \"avagrahadeva\", 0x093d,\n \"aybarmenian\", 0x0561,\n \"ayin\", 0x05e2,\n \"ayinaltonehebrew\", 0xfb20,\n \"ayinhebrew\", 0x05e2,\n \"b\", 0x0062,\n \"babengali\", 0x09ac,\n \"backslash\", 0x005c,\n \"backslashmonospace\", 0xff3c,\n \"badeva\", 0x092c,\n \"bagujarati\", 0x0aac,\n \"bagurmukhi\", 0x0a2c,\n \"bahiragana\", 0x3070,\n \"bahtthai\", 0x0e3f,\n \"bakatakana\", 0x30d0,\n \"bar\", 0x007c,\n \"barmonospace\", 0xff5c,\n \"bbopomofo\", 0x3105,\n \"bcircle\", 0x24d1,\n \"bdotaccent\", 0x1e03,\n \"bdotbelow\", 0x1e05,\n \"beamedsixteenthnotes\", 0x266c,\n \"because\", 0x2235,\n \"becyrillic\", 0x0431,\n \"beharabic\", 0x0628,\n \"behfinalarabic\", 0xfe90,\n \"behinitialarabic\", 0xfe91,\n \"behiragana\", 0x3079,\n \"behmedialarabic\", 0xfe92,\n \"behmeeminitialarabic\", 0xfc9f,\n \"behmeemisolatedarabic\", 0xfc08,\n \"behnoonfinalarabic\", 0xfc6d,\n \"bekatakana\", 0x30d9,\n \"benarmenian\", 0x0562,\n \"bet\", 0x05d1,\n \"beta\", 0x03b2,\n \"betasymbolgreek\", 0x03d0,\n \"betdagesh\", 0xfb31,\n \"betdageshhebrew\", 0xfb31,\n \"bethebrew\", 0x05d1,\n \"betrafehebrew\", 0xfb4c,\n \"bhabengali\", 0x09ad,\n \"bhadeva\", 0x092d,\n \"bhagujarati\", 0x0aad,\n \"bhagurmukhi\", 0x0a2d,\n \"bhook\", 0x0253,\n \"bihiragana\", 0x3073,\n \"bikatakana\", 0x30d3,\n \"bilabialclick\", 0x0298,\n \"bindigurmukhi\", 0x0a02,\n \"birusquare\", 0x3331,\n \"blackcircle\", 0x25cf,\n \"blackdiamond\", 0x25c6,\n \"blackdownpointingtriangle\", 0x25bc,\n \"blackleftpointingpointer\", 0x25c4,\n \"blackleftpointingtriangle\", 0x25c0,\n \"blacklenticularbracketleft\", 0x3010,\n \"blacklenticularbracketleftvertical\", 0xfe3b,\n \"blacklenticularbracketright\", 0x3011,\n \"blacklenticularbracketrightvertical\", 0xfe3c,\n \"blacklowerlefttriangle\", 0x25e3,\n \"blacklowerrighttriangle\", 0x25e2,\n \"blackrectangle\", 0x25ac,\n \"blackrightpointingpointer\", 0x25ba,\n \"blackrightpointingtriangle\", 0x25b6,\n \"blacksmallsquare\", 0x25aa,\n \"blacksmilingface\", 0x263b,\n \"blacksquare\", 0x25a0,\n \"blackstar\", 0x2605,\n \"blackupperlefttriangle\", 0x25e4,\n \"blackupperrighttriangle\", 0x25e5,\n \"blackuppointingsmalltriangle\", 0x25b4,\n \"blackuppointingtriangle\", 0x25b2,\n \"blank\", 0x2423,\n \"blinebelow\", 0x1e07,\n \"block\", 0x2588,\n \"bmonospace\", 0xff42,\n \"bobaimaithai\", 0x0e1a,\n \"bohiragana\", 0x307c,\n \"bokatakana\", 0x30dc,\n \"bparen\", 0x249d,\n \"bqsquare\", 0x33c3,\n \"braceex\", 0xf8f4,\n \"braceleft\", 0x007b,\n \"braceleftbt\", 0xf8f3,\n \"braceleftmid\", 0xf8f2,\n \"braceleftmonospace\", 0xff5b,\n \"braceleftsmall\", 0xfe5b,\n \"bracelefttp\", 0xf8f1,\n \"braceleftvertical\", 0xfe37,\n \"braceright\", 0x007d,\n \"bracerightbt\", 0xf8fe,\n \"bracerightmid\", 0xf8fd,\n \"bracerightmonospace\", 0xff5d,\n \"bracerightsmall\", 0xfe5c,\n \"bracerighttp\", 0xf8fc,\n \"bracerightvertical\", 0xfe38,\n \"bracketleft\", 0x005b,\n \"bracketleftbt\", 0xf8f0,\n \"bracketleftex\", 0xf8ef,\n \"bracketleftmonospace\", 0xff3b,\n \"bracketlefttp\", 0xf8ee,\n \"bracketright\", 0x005d,\n \"bracketrightbt\", 0xf8fb,\n \"bracketrightex\", 0xf8fa,\n \"bracketrightmonospace\", 0xff3d,\n \"bracketrighttp\", 0xf8f9,\n \"breve\", 0x02d8,\n \"brevebelowcmb\", 0x032e,\n \"brevecmb\", 0x0306,\n \"breveinvertedbelowcmb\", 0x032f,\n \"breveinvertedcmb\", 0x0311,\n \"breveinverteddoublecmb\", 0x0361,\n \"bridgebelowcmb\", 0x032a,\n \"bridgeinvertedbelowcmb\", 0x033a,\n \"brokenbar\", 0x00a6,\n \"bstroke\", 0x0180,\n \"bsuperior\", 0xf6ea,\n \"btopbar\", 0x0183,\n \"buhiragana\", 0x3076,\n \"bukatakana\", 0x30d6,\n \"bullet\", 0x2022,\n \"bulletinverse\", 0x25d8,\n \"bulletoperator\", 0x2219,\n \"bullseye\", 0x25ce,\n \"c\", 0x0063,\n \"caarmenian\", 0x056e,\n \"cabengali\", 0x099a,\n \"cacute\", 0x0107,\n \"cadeva\", 0x091a,\n \"cagujarati\", 0x0a9a,\n \"cagurmukhi\", 0x0a1a,\n \"calsquare\", 0x3388,\n \"candrabindubengali\", 0x0981,\n \"candrabinducmb\", 0x0310,\n \"candrabindudeva\", 0x0901,\n \"candrabindugujarati\", 0x0a81,\n \"capslock\", 0x21ea,\n \"careof\", 0x2105,\n \"caron\", 0x02c7,\n \"caronbelowcmb\", 0x032c,\n \"caroncmb\", 0x030c,\n \"carriagereturn\", 0x21b5,\n \"cbopomofo\", 0x3118,\n \"ccaron\", 0x010d,\n \"ccedilla\", 0x00e7,\n \"ccedillaacute\", 0x1e09,\n \"ccircle\", 0x24d2,\n \"ccircumflex\", 0x0109,\n \"ccurl\", 0x0255,\n \"cdot\", 0x010b,\n \"cdotaccent\", 0x010b,\n \"cdsquare\", 0x33c5,\n \"cedilla\", 0x00b8,\n \"cedillacmb\", 0x0327,\n \"cent\", 0x00a2,\n \"centigrade\", 0x2103,\n \"centinferior\", 0xf6df,\n \"centmonospace\", 0xffe0,\n \"centoldstyle\", 0xf7a2,\n \"centsuperior\", 0xf6e0,\n \"chaarmenian\", 0x0579,\n \"chabengali\", 0x099b,\n \"chadeva\", 0x091b,\n \"chagujarati\", 0x0a9b,\n \"chagurmukhi\", 0x0a1b,\n \"chbopomofo\", 0x3114,\n \"cheabkhasiancyrillic\", 0x04bd,\n \"checkmark\", 0x2713,\n \"checyrillic\", 0x0447,\n \"chedescenderabkhasiancyrillic\", 0x04bf,\n \"chedescendercyrillic\", 0x04b7,\n \"chedieresiscyrillic\", 0x04f5,\n \"cheharmenian\", 0x0573,\n \"chekhakassiancyrillic\", 0x04cc,\n \"cheverticalstrokecyrillic\", 0x04b9,\n \"chi\", 0x03c7,\n \"chieuchacirclekorean\", 0x3277,\n \"chieuchaparenkorean\", 0x3217,\n \"chieuchcirclekorean\", 0x3269,\n \"chieuchkorean\", 0x314a,\n \"chieuchparenkorean\", 0x3209,\n \"chochangthai\", 0x0e0a,\n \"chochanthai\", 0x0e08,\n \"chochingthai\", 0x0e09,\n \"chochoethai\", 0x0e0c,\n \"chook\", 0x0188,\n \"cieucacirclekorean\", 0x3276,\n \"cieucaparenkorean\", 0x3216,\n \"cieuccirclekorean\", 0x3268,\n \"cieuckorean\", 0x3148,\n \"cieucparenkorean\", 0x3208,\n \"cieucuparenkorean\", 0x321c,\n \"circle\", 0x25cb,\n \"circlecopyrt\", 0x00a9, // Glyph is missing from Adobe's original list.\n \"circlemultiply\", 0x2297,\n \"circleot\", 0x2299,\n \"circleplus\", 0x2295,\n \"circlepostalmark\", 0x3036,\n \"circlewithlefthalfblack\", 0x25d0,\n \"circlewithrighthalfblack\", 0x25d1,\n \"circumflex\", 0x02c6,\n \"circumflexbelowcmb\", 0x032d,\n \"circumflexcmb\", 0x0302,\n \"clear\", 0x2327,\n \"clickalveolar\", 0x01c2,\n \"clickdental\", 0x01c0,\n \"clicklateral\", 0x01c1,\n \"clickretroflex\", 0x01c3,\n \"club\", 0x2663,\n \"clubsuitblack\", 0x2663,\n \"clubsuitwhite\", 0x2667,\n \"cmcubedsquare\", 0x33a4,\n \"cmonospace\", 0xff43,\n \"cmsquaredsquare\", 0x33a0,\n \"coarmenian\", 0x0581,\n \"colon\", 0x003a,\n \"colonmonetary\", 0x20a1,\n \"colonmonospace\", 0xff1a,\n \"colonsign\", 0x20a1,\n \"colonsmall\", 0xfe55,\n \"colontriangularhalfmod\", 0x02d1,\n \"colontriangularmod\", 0x02d0,\n \"comma\", 0x002c,\n \"commaabovecmb\", 0x0313,\n \"commaaboverightcmb\", 0x0315,\n \"commaaccent\", 0xf6c3,\n \"commaarabic\", 0x060c,\n \"commaarmenian\", 0x055d,\n \"commainferior\", 0xf6e1,\n \"commamonospace\", 0xff0c,\n \"commareversedabovecmb\", 0x0314,\n \"commareversedmod\", 0x02bd,\n \"commasmall\", 0xfe50,\n \"commasuperior\", 0xf6e2,\n \"commaturnedabovecmb\", 0x0312,\n \"commaturnedmod\", 0x02bb,\n \"compass\", 0x263c,\n \"congruent\", 0x2245,\n \"contourintegral\", 0x222e,\n \"control\", 0x2303,\n \"controlACK\", 0x0006,\n \"controlBEL\", 0x0007,\n \"controlBS\", 0x0008,\n \"controlCAN\", 0x0018,\n \"controlCR\", 0x000d,\n \"controlDC1\", 0x0011,\n \"controlDC2\", 0x0012,\n \"controlDC3\", 0x0013,\n \"controlDC4\", 0x0014,\n \"controlDEL\", 0x007f,\n \"controlDLE\", 0x0010,\n \"controlEM\", 0x0019,\n \"controlENQ\", 0x0005,\n \"controlEOT\", 0x0004,\n \"controlESC\", 0x001b,\n \"controlETB\", 0x0017,\n \"controlETX\", 0x0003,\n \"controlFF\", 0x000c,\n \"controlFS\", 0x001c,\n \"controlGS\", 0x001d,\n \"controlHT\", 0x0009,\n \"controlLF\", 0x000a,\n \"controlNAK\", 0x0015,\n \"controlNULL\", 0x0000, // Glyph is missing from Adobe's original list.\n \"controlRS\", 0x001e,\n \"controlSI\", 0x000f,\n \"controlSO\", 0x000e,\n \"controlSOT\", 0x0002,\n \"controlSTX\", 0x0001,\n \"controlSUB\", 0x001a,\n \"controlSYN\", 0x0016,\n \"controlUS\", 0x001f,\n \"controlVT\", 0x000b,\n \"copyright\", 0x00a9,\n \"copyrightsans\", 0xf8e9,\n \"copyrightserif\", 0xf6d9,\n \"cornerbracketleft\", 0x300c,\n \"cornerbracketlefthalfwidth\", 0xff62,\n \"cornerbracketleftvertical\", 0xfe41,\n \"cornerbracketright\", 0x300d,\n \"cornerbracketrighthalfwidth\", 0xff63,\n \"cornerbracketrightvertical\", 0xfe42,\n \"corporationsquare\", 0x337f,\n \"cosquare\", 0x33c7,\n \"coverkgsquare\", 0x33c6,\n \"cparen\", 0x249e,\n \"cruzeiro\", 0x20a2,\n \"cstretched\", 0x0297,\n \"curlyand\", 0x22cf,\n \"curlyor\", 0x22ce,\n \"currency\", 0x00a4,\n \"cyrBreve\", 0xf6d1,\n \"cyrFlex\", 0xf6d2,\n \"cyrbreve\", 0xf6d4,\n \"cyrflex\", 0xf6d5,\n \"d\", 0x0064,\n \"daarmenian\", 0x0564,\n \"dabengali\", 0x09a6,\n \"dadarabic\", 0x0636,\n \"dadeva\", 0x0926,\n \"dadfinalarabic\", 0xfebe,\n \"dadinitialarabic\", 0xfebf,\n \"dadmedialarabic\", 0xfec0,\n \"dagesh\", 0x05bc,\n \"dageshhebrew\", 0x05bc,\n \"dagger\", 0x2020,\n \"daggerdbl\", 0x2021,\n \"dagujarati\", 0x0aa6,\n \"dagurmukhi\", 0x0a26,\n \"dahiragana\", 0x3060,\n \"dakatakana\", 0x30c0,\n \"dalarabic\", 0x062f,\n \"dalet\", 0x05d3,\n \"daletdagesh\", 0xfb33,\n \"daletdageshhebrew\", 0xfb33,\n \"dalethebrew\", 0x05d3,\n \"dalfinalarabic\", 0xfeaa,\n \"dammaarabic\", 0x064f,\n \"dammalowarabic\", 0x064f,\n \"dammatanaltonearabic\", 0x064c,\n \"dammatanarabic\", 0x064c,\n \"danda\", 0x0964,\n \"dargahebrew\", 0x05a7,\n \"dargalefthebrew\", 0x05a7,\n \"dasiapneumatacyrilliccmb\", 0x0485,\n \"dblGrave\", 0xf6d3,\n \"dblanglebracketleft\", 0x300a,\n \"dblanglebracketleftvertical\", 0xfe3d,\n \"dblanglebracketright\", 0x300b,\n \"dblanglebracketrightvertical\", 0xfe3e,\n \"dblarchinvertedbelowcmb\", 0x032b,\n \"dblarrowleft\", 0x21d4,\n \"dblarrowright\", 0x21d2,\n \"dbldanda\", 0x0965,\n \"dblgrave\", 0xf6d6,\n \"dblgravecmb\", 0x030f,\n \"dblintegral\", 0x222c,\n \"dbllowline\", 0x2017,\n \"dbllowlinecmb\", 0x0333,\n \"dbloverlinecmb\", 0x033f,\n \"dblprimemod\", 0x02ba,\n \"dblverticalbar\", 0x2016,\n \"dblverticallineabovecmb\", 0x030e,\n \"dbopomofo\", 0x3109,\n \"dbsquare\", 0x33c8,\n \"dcaron\", 0x010f,\n \"dcedilla\", 0x1e11,\n \"dcircle\", 0x24d3,\n \"dcircumflexbelow\", 0x1e13,\n \"dcroat\", 0x0111,\n \"ddabengali\", 0x09a1,\n \"ddadeva\", 0x0921,\n \"ddagujarati\", 0x0aa1,\n \"ddagurmukhi\", 0x0a21,\n \"ddalarabic\", 0x0688,\n \"ddalfinalarabic\", 0xfb89,\n \"dddhadeva\", 0x095c,\n \"ddhabengali\", 0x09a2,\n \"ddhadeva\", 0x0922,\n \"ddhagujarati\", 0x0aa2,\n \"ddhagurmukhi\", 0x0a22,\n \"ddotaccent\", 0x1e0b,\n \"ddotbelow\", 0x1e0d,\n \"decimalseparatorarabic\", 0x066b,\n \"decimalseparatorpersian\", 0x066b,\n \"decyrillic\", 0x0434,\n \"degree\", 0x00b0,\n \"dehihebrew\", 0x05ad,\n \"dehiragana\", 0x3067,\n \"deicoptic\", 0x03ef,\n \"dekatakana\", 0x30c7,\n \"deleteleft\", 0x232b,\n \"deleteright\", 0x2326,\n \"delta\", 0x03b4,\n \"deltaturned\", 0x018d,\n \"denominatorminusonenumeratorbengali\", 0x09f8,\n \"dezh\", 0x02a4,\n \"dhabengali\", 0x09a7,\n \"dhadeva\", 0x0927,\n \"dhagujarati\", 0x0aa7,\n \"dhagurmukhi\", 0x0a27,\n \"dhook\", 0x0257,\n \"dialytikatonos\", 0x0385,\n \"dialytikatonoscmb\", 0x0344,\n \"diamond\", 0x2666,\n \"diamondsuitwhite\", 0x2662,\n \"dieresis\", 0x00a8,\n \"dieresisacute\", 0xf6d7,\n \"dieresisbelowcmb\", 0x0324,\n \"dieresiscmb\", 0x0308,\n \"dieresisgrave\", 0xf6d8,\n \"dieresistonos\", 0x0385,\n \"dihiragana\", 0x3062,\n \"dikatakana\", 0x30c2,\n \"dittomark\", 0x3003,\n \"divide\", 0x00f7,\n \"divides\", 0x2223,\n \"divisionslash\", 0x2215,\n \"djecyrillic\", 0x0452,\n \"dkshade\", 0x2593,\n \"dlinebelow\", 0x1e0f,\n \"dlsquare\", 0x3397,\n \"dmacron\", 0x0111,\n \"dmonospace\", 0xff44,\n \"dnblock\", 0x2584,\n \"dochadathai\", 0x0e0e,\n \"dodekthai\", 0x0e14,\n \"dohiragana\", 0x3069,\n \"dokatakana\", 0x30c9,\n \"dollar\", 0x0024,\n \"dollarinferior\", 0xf6e3,\n \"dollarmonospace\", 0xff04,\n \"dollaroldstyle\", 0xf724,\n \"dollarsmall\", 0xfe69,\n \"dollarsuperior\", 0xf6e4,\n \"dong\", 0x20ab,\n \"dorusquare\", 0x3326,\n \"dotaccent\", 0x02d9,\n \"dotaccentcmb\", 0x0307,\n \"dotbelowcmb\", 0x0323,\n \"dotbelowcomb\", 0x0323,\n \"dotkatakana\", 0x30fb,\n \"dotlessi\", 0x0131,\n \"dotlessj\", 0xf6be,\n \"dotlessjstrokehook\", 0x0284,\n \"dotmath\", 0x22c5,\n \"dottedcircle\", 0x25cc,\n \"doubleyodpatah\", 0xfb1f,\n \"doubleyodpatahhebrew\", 0xfb1f,\n \"downtackbelowcmb\", 0x031e,\n \"downtackmod\", 0x02d5,\n \"dparen\", 0x249f,\n \"dsuperior\", 0xf6eb,\n \"dtail\", 0x0256,\n \"dtopbar\", 0x018c,\n \"duhiragana\", 0x3065,\n \"dukatakana\", 0x30c5,\n \"dz\", 0x01f3,\n \"dzaltone\", 0x02a3,\n \"dzcaron\", 0x01c6,\n \"dzcurl\", 0x02a5,\n \"dzeabkhasiancyrillic\", 0x04e1,\n \"dzecyrillic\", 0x0455,\n \"dzhecyrillic\", 0x045f,\n \"e\", 0x0065,\n \"eacute\", 0x00e9,\n \"earth\", 0x2641,\n \"ebengali\", 0x098f,\n \"ebopomofo\", 0x311c,\n \"ebreve\", 0x0115,\n \"ecandradeva\", 0x090d,\n \"ecandragujarati\", 0x0a8d,\n \"ecandravowelsigndeva\", 0x0945,\n \"ecandravowelsigngujarati\", 0x0ac5,\n \"ecaron\", 0x011b,\n \"ecedillabreve\", 0x1e1d,\n \"echarmenian\", 0x0565,\n \"echyiwnarmenian\", 0x0587,\n \"ecircle\", 0x24d4,\n \"ecircumflex\", 0x00ea,\n \"ecircumflexacute\", 0x1ebf,\n \"ecircumflexbelow\", 0x1e19,\n \"ecircumflexdotbelow\", 0x1ec7,\n \"ecircumflexgrave\", 0x1ec1,\n \"ecircumflexhookabove\", 0x1ec3,\n \"ecircumflextilde\", 0x1ec5,\n \"ecyrillic\", 0x0454,\n \"edblgrave\", 0x0205,\n \"edeva\", 0x090f,\n \"edieresis\", 0x00eb,\n \"edot\", 0x0117,\n \"edotaccent\", 0x0117,\n \"edotbelow\", 0x1eb9,\n \"eegurmukhi\", 0x0a0f,\n \"eematragurmukhi\", 0x0a47,\n \"efcyrillic\", 0x0444,\n \"egrave\", 0x00e8,\n \"egujarati\", 0x0a8f,\n \"eharmenian\", 0x0567,\n \"ehbopomofo\", 0x311d,\n \"ehiragana\", 0x3048,\n \"ehookabove\", 0x1ebb,\n \"eibopomofo\", 0x311f,\n \"eight\", 0x0038,\n \"eightarabic\", 0x0668,\n \"eightbengali\", 0x09ee,\n \"eightcircle\", 0x2467,\n \"eightcircleinversesansserif\", 0x2791,\n \"eightdeva\", 0x096e,\n \"eighteencircle\", 0x2471,\n \"eighteenparen\", 0x2485,\n \"eighteenperiod\", 0x2499,\n \"eightgujarati\", 0x0aee,\n \"eightgurmukhi\", 0x0a6e,\n \"eighthackarabic\", 0x0668,\n \"eighthangzhou\", 0x3028,\n \"eighthnotebeamed\", 0x266b,\n \"eightideographicparen\", 0x3227,\n \"eightinferior\", 0x2088,\n \"eightmonospace\", 0xff18,\n \"eightoldstyle\", 0xf738,\n \"eightparen\", 0x247b,\n \"eightperiod\", 0x248f,\n \"eightpersian\", 0x06f8,\n \"eightroman\", 0x2177,\n \"eightsuperior\", 0x2078,\n \"eightthai\", 0x0e58,\n \"einvertedbreve\", 0x0207,\n \"eiotifiedcyrillic\", 0x0465,\n \"ekatakana\", 0x30a8,\n \"ekatakanahalfwidth\", 0xff74,\n \"ekonkargurmukhi\", 0x0a74,\n \"ekorean\", 0x3154,\n \"elcyrillic\", 0x043b,\n \"element\", 0x2208,\n \"elevencircle\", 0x246a,\n \"elevenparen\", 0x247e,\n \"elevenperiod\", 0x2492,\n \"elevenroman\", 0x217a,\n \"ellipsis\", 0x2026,\n \"ellipsisvertical\", 0x22ee,\n \"emacron\", 0x0113,\n \"emacronacute\", 0x1e17,\n \"emacrongrave\", 0x1e15,\n \"emcyrillic\", 0x043c,\n \"emdash\", 0x2014,\n \"emdashvertical\", 0xfe31,\n \"emonospace\", 0xff45,\n \"emphasismarkarmenian\", 0x055b,\n \"emptyset\", 0x2205,\n \"enbopomofo\", 0x3123,\n \"encyrillic\", 0x043d,\n \"endash\", 0x2013,\n \"endashvertical\", 0xfe32,\n \"endescendercyrillic\", 0x04a3,\n \"eng\", 0x014b,\n \"engbopomofo\", 0x3125,\n \"enghecyrillic\", 0x04a5,\n \"enhookcyrillic\", 0x04c8,\n \"enspace\", 0x2002,\n \"eogonek\", 0x0119,\n \"eokorean\", 0x3153,\n \"eopen\", 0x025b,\n \"eopenclosed\", 0x029a,\n \"eopenreversed\", 0x025c,\n \"eopenreversedclosed\", 0x025e,\n \"eopenreversedhook\", 0x025d,\n \"eparen\", 0x24a0,\n \"epsilon\", 0x03b5,\n \"epsilontonos\", 0x03ad,\n \"equal\", 0x003d,\n \"equalmonospace\", 0xff1d,\n \"equalsmall\", 0xfe66,\n \"equalsuperior\", 0x207c,\n \"equivalence\", 0x2261,\n \"erbopomofo\", 0x3126,\n \"ercyrillic\", 0x0440,\n \"ereversed\", 0x0258,\n \"ereversedcyrillic\", 0x044d,\n \"escyrillic\", 0x0441,\n \"esdescendercyrillic\", 0x04ab,\n \"esh\", 0x0283,\n \"eshcurl\", 0x0286,\n \"eshortdeva\", 0x090e,\n \"eshortvowelsigndeva\", 0x0946,\n \"eshreversedloop\", 0x01aa,\n \"eshsquatreversed\", 0x0285,\n \"esmallhiragana\", 0x3047,\n \"esmallkatakana\", 0x30a7,\n \"esmallkatakanahalfwidth\", 0xff6a,\n \"estimated\", 0x212e,\n \"esuperior\", 0xf6ec,\n \"eta\", 0x03b7,\n \"etarmenian\", 0x0568,\n \"etatonos\", 0x03ae,\n \"eth\", 0x00f0,\n \"etilde\", 0x1ebd,\n \"etildebelow\", 0x1e1b,\n \"etnahtafoukhhebrew\", 0x0591,\n \"etnahtafoukhlefthebrew\", 0x0591,\n \"etnahtahebrew\", 0x0591,\n \"etnahtalefthebrew\", 0x0591,\n \"eturned\", 0x01dd,\n \"eukorean\", 0x3161,\n \"euro\", 0x20ac,\n \"evowelsignbengali\", 0x09c7,\n \"evowelsigndeva\", 0x0947,\n \"evowelsigngujarati\", 0x0ac7,\n \"exclam\", 0x0021,\n \"exclamarmenian\", 0x055c,\n \"exclamdbl\", 0x203c,\n \"exclamdown\", 0x00a1,\n \"exclamdownsmall\", 0xf7a1,\n \"exclammonospace\", 0xff01,\n \"exclamsmall\", 0xf721,\n \"existential\", 0x2203,\n \"ezh\", 0x0292,\n \"ezhcaron\", 0x01ef,\n \"ezhcurl\", 0x0293,\n \"ezhreversed\", 0x01b9,\n \"ezhtail\", 0x01ba,\n \"f\", 0x0066,\n \"fadeva\", 0x095e,\n \"fagurmukhi\", 0x0a5e,\n \"fahrenheit\", 0x2109,\n \"fathaarabic\", 0x064e,\n \"fathalowarabic\", 0x064e,\n \"fathatanarabic\", 0x064b,\n \"fbopomofo\", 0x3108,\n \"fcircle\", 0x24d5,\n \"fdotaccent\", 0x1e1f,\n \"feharabic\", 0x0641,\n \"feharmenian\", 0x0586,\n \"fehfinalarabic\", 0xfed2,\n \"fehinitialarabic\", 0xfed3,\n \"fehmedialarabic\", 0xfed4,\n \"feicoptic\", 0x03e5,\n \"female\", 0x2640,\n \"ff\", 0xfb00,\n \"f_f\", 0xfb00,\n \"ffi\", 0xfb03,\n \"f_f_i\", 0xfb03,\n \"ffl\", 0xfb04,\n \"f_f_l\", 0xfb04,\n \"fi\", 0xfb01,\n \"f_i\", 0xfb01,\n \"fifteencircle\", 0x246e,\n \"fifteenparen\", 0x2482,\n \"fifteenperiod\", 0x2496,\n \"figuredash\", 0x2012,\n \"filledbox\", 0x25a0,\n \"filledrect\", 0x25ac,\n \"finalkaf\", 0x05da,\n \"finalkafdagesh\", 0xfb3a,\n \"finalkafdageshhebrew\", 0xfb3a,\n \"finalkafhebrew\", 0x05da,\n \"finalmem\", 0x05dd,\n \"finalmemhebrew\", 0x05dd,\n \"finalnun\", 0x05df,\n \"finalnunhebrew\", 0x05df,\n \"finalpe\", 0x05e3,\n \"finalpehebrew\", 0x05e3,\n \"finaltsadi\", 0x05e5,\n \"finaltsadihebrew\", 0x05e5,\n \"firsttonechinese\", 0x02c9,\n \"fisheye\", 0x25c9,\n \"fitacyrillic\", 0x0473,\n \"five\", 0x0035,\n \"fivearabic\", 0x0665,\n \"fivebengali\", 0x09eb,\n \"fivecircle\", 0x2464,\n \"fivecircleinversesansserif\", 0x278e,\n \"fivedeva\", 0x096b,\n \"fiveeighths\", 0x215d,\n \"fivegujarati\", 0x0aeb,\n \"fivegurmukhi\", 0x0a6b,\n \"fivehackarabic\", 0x0665,\n \"fivehangzhou\", 0x3025,\n \"fiveideographicparen\", 0x3224,\n \"fiveinferior\", 0x2085,\n \"fivemonospace\", 0xff15,\n \"fiveoldstyle\", 0xf735,\n \"fiveparen\", 0x2478,\n \"fiveperiod\", 0x248c,\n \"fivepersian\", 0x06f5,\n \"fiveroman\", 0x2174,\n \"fivesuperior\", 0x2075,\n \"fivethai\", 0x0e55,\n \"fl\", 0xfb02,\n \"f_l\", 0xfb02,\n \"florin\", 0x0192,\n \"fmonospace\", 0xff46,\n \"fmsquare\", 0x3399,\n \"fofanthai\", 0x0e1f,\n \"fofathai\", 0x0e1d,\n \"fongmanthai\", 0x0e4f,\n \"forall\", 0x2200,\n \"four\", 0x0034,\n \"fourarabic\", 0x0664,\n \"fourbengali\", 0x09ea,\n \"fourcircle\", 0x2463,\n \"fourcircleinversesansserif\", 0x278d,\n \"fourdeva\", 0x096a,\n \"fourgujarati\", 0x0aea,\n \"fourgurmukhi\", 0x0a6a,\n \"fourhackarabic\", 0x0664,\n \"fourhangzhou\", 0x3024,\n \"fourideographicparen\", 0x3223,\n \"fourinferior\", 0x2084,\n \"fourmonospace\", 0xff14,\n \"fournumeratorbengali\", 0x09f7,\n \"fouroldstyle\", 0xf734,\n \"fourparen\", 0x2477,\n \"fourperiod\", 0x248b,\n \"fourpersian\", 0x06f4,\n \"fourroman\", 0x2173,\n \"foursuperior\", 0x2074,\n \"fourteencircle\", 0x246d,\n \"fourteenparen\", 0x2481,\n \"fourteenperiod\", 0x2495,\n \"fourthai\", 0x0e54,\n \"fourthtonechinese\", 0x02cb,\n \"fparen\", 0x24a1,\n \"fraction\", 0x2044,\n \"franc\", 0x20a3,\n \"g\", 0x0067,\n \"gabengali\", 0x0997,\n \"gacute\", 0x01f5,\n \"gadeva\", 0x0917,\n \"gafarabic\", 0x06af,\n \"gaffinalarabic\", 0xfb93,\n \"gafinitialarabic\", 0xfb94,\n \"gafmedialarabic\", 0xfb95,\n \"gagujarati\", 0x0a97,\n \"gagurmukhi\", 0x0a17,\n \"gahiragana\", 0x304c,\n \"gakatakana\", 0x30ac,\n \"gamma\", 0x03b3,\n \"gammalatinsmall\", 0x0263,\n \"gammasuperior\", 0x02e0,\n \"gangiacoptic\", 0x03eb,\n \"gbopomofo\", 0x310d,\n \"gbreve\", 0x011f,\n \"gcaron\", 0x01e7,\n \"gcedilla\", 0x0123,\n \"gcircle\", 0x24d6,\n \"gcircumflex\", 0x011d,\n \"gcommaaccent\", 0x0123,\n \"gdot\", 0x0121,\n \"gdotaccent\", 0x0121,\n \"gecyrillic\", 0x0433,\n \"gehiragana\", 0x3052,\n \"gekatakana\", 0x30b2,\n \"geometricallyequal\", 0x2251,\n \"gereshaccenthebrew\", 0x059c,\n \"gereshhebrew\", 0x05f3,\n \"gereshmuqdamhebrew\", 0x059d,\n \"germandbls\", 0x00df,\n \"gershayimaccenthebrew\", 0x059e,\n \"gershayimhebrew\", 0x05f4,\n \"getamark\", 0x3013,\n \"ghabengali\", 0x0998,\n \"ghadarmenian\", 0x0572,\n \"ghadeva\", 0x0918,\n \"ghagujarati\", 0x0a98,\n \"ghagurmukhi\", 0x0a18,\n \"ghainarabic\", 0x063a,\n \"ghainfinalarabic\", 0xfece,\n \"ghaininitialarabic\", 0xfecf,\n \"ghainmedialarabic\", 0xfed0,\n \"ghemiddlehookcyrillic\", 0x0495,\n \"ghestrokecyrillic\", 0x0493,\n \"gheupturncyrillic\", 0x0491,\n \"ghhadeva\", 0x095a,\n \"ghhagurmukhi\", 0x0a5a,\n \"ghook\", 0x0260,\n \"ghzsquare\", 0x3393,\n \"gihiragana\", 0x304e,\n \"gikatakana\", 0x30ae,\n \"gimarmenian\", 0x0563,\n \"gimel\", 0x05d2,\n \"gimeldagesh\", 0xfb32,\n \"gimeldageshhebrew\", 0xfb32,\n \"gimelhebrew\", 0x05d2,\n \"gjecyrillic\", 0x0453,\n \"glottalinvertedstroke\", 0x01be,\n \"glottalstop\", 0x0294,\n \"glottalstopinverted\", 0x0296,\n \"glottalstopmod\", 0x02c0,\n \"glottalstopreversed\", 0x0295,\n \"glottalstopreversedmod\", 0x02c1,\n \"glottalstopreversedsuperior\", 0x02e4,\n \"glottalstopstroke\", 0x02a1,\n \"glottalstopstrokereversed\", 0x02a2,\n \"gmacron\", 0x1e21,\n \"gmonospace\", 0xff47,\n \"gohiragana\", 0x3054,\n \"gokatakana\", 0x30b4,\n \"gparen\", 0x24a2,\n \"gpasquare\", 0x33ac,\n \"gradient\", 0x2207,\n \"grave\", 0x0060,\n \"gravebelowcmb\", 0x0316,\n \"gravecmb\", 0x0300,\n \"gravecomb\", 0x0300,\n \"gravedeva\", 0x0953,\n \"gravelowmod\", 0x02ce,\n \"gravemonospace\", 0xff40,\n \"gravetonecmb\", 0x0340,\n \"greater\", 0x003e,\n \"greaterequal\", 0x2265,\n \"greaterequalorless\", 0x22db,\n \"greatermonospace\", 0xff1e,\n \"greaterorequivalent\", 0x2273,\n \"greaterorless\", 0x2277,\n \"greateroverequal\", 0x2267,\n \"greatersmall\", 0xfe65,\n \"gscript\", 0x0261,\n \"gstroke\", 0x01e5,\n \"guhiragana\", 0x3050,\n \"guillemotleft\", 0x00ab,\n \"guillemotright\", 0x00bb,\n \"guilsinglleft\", 0x2039,\n \"guilsinglright\", 0x203a,\n \"gukatakana\", 0x30b0,\n \"guramusquare\", 0x3318,\n \"gysquare\", 0x33c9,\n \"h\", 0x0068,\n \"haabkhasiancyrillic\", 0x04a9,\n \"haaltonearabic\", 0x06c1,\n \"habengali\", 0x09b9,\n \"hadescendercyrillic\", 0x04b3,\n \"hadeva\", 0x0939,\n \"hagujarati\", 0x0ab9,\n \"hagurmukhi\", 0x0a39,\n \"haharabic\", 0x062d,\n \"hahfinalarabic\", 0xfea2,\n \"hahinitialarabic\", 0xfea3,\n \"hahiragana\", 0x306f,\n \"hahmedialarabic\", 0xfea4,\n \"haitusquare\", 0x332a,\n \"hakatakana\", 0x30cf,\n \"hakatakanahalfwidth\", 0xff8a,\n \"halantgurmukhi\", 0x0a4d,\n \"hamzaarabic\", 0x0621,\n \"hamzalowarabic\", 0x0621,\n \"hangulfiller\", 0x3164,\n \"hardsigncyrillic\", 0x044a,\n \"harpoonleftbarbup\", 0x21bc,\n \"harpoonrightbarbup\", 0x21c0,\n \"hasquare\", 0x33ca,\n \"hatafpatah\", 0x05b2,\n \"hatafpatah16\", 0x05b2,\n \"hatafpatah23\", 0x05b2,\n \"hatafpatah2f\", 0x05b2,\n \"hatafpatahhebrew\", 0x05b2,\n \"hatafpatahnarrowhebrew\", 0x05b2,\n \"hatafpatahquarterhebrew\", 0x05b2,\n \"hatafpatahwidehebrew\", 0x05b2,\n \"hatafqamats\", 0x05b3,\n \"hatafqamats1b\", 0x05b3,\n \"hatafqamats28\", 0x05b3,\n \"hatafqamats34\", 0x05b3,\n \"hatafqamatshebrew\", 0x05b3,\n \"hatafqamatsnarrowhebrew\", 0x05b3,\n \"hatafqamatsquarterhebrew\", 0x05b3,\n \"hatafqamatswidehebrew\", 0x05b3,\n \"hatafsegol\", 0x05b1,\n \"hatafsegol17\", 0x05b1,\n \"hatafsegol24\", 0x05b1,\n \"hatafsegol30\", 0x05b1,\n \"hatafsegolhebrew\", 0x05b1,\n \"hatafsegolnarrowhebrew\", 0x05b1,\n \"hatafsegolquarterhebrew\", 0x05b1,\n \"hatafsegolwidehebrew\", 0x05b1,\n \"hbar\", 0x0127,\n \"hbopomofo\", 0x310f,\n \"hbrevebelow\", 0x1e2b,\n \"hcedilla\", 0x1e29,\n \"hcircle\", 0x24d7,\n \"hcircumflex\", 0x0125,\n \"hdieresis\", 0x1e27,\n \"hdotaccent\", 0x1e23,\n \"hdotbelow\", 0x1e25,\n \"he\", 0x05d4,\n \"heart\", 0x2665,\n \"heartsuitblack\", 0x2665,\n \"heartsuitwhite\", 0x2661,\n \"hedagesh\", 0xfb34,\n \"hedageshhebrew\", 0xfb34,\n \"hehaltonearabic\", 0x06c1,\n \"heharabic\", 0x0647,\n \"hehebrew\", 0x05d4,\n \"hehfinalaltonearabic\", 0xfba7,\n \"hehfinalalttwoarabic\", 0xfeea,\n \"hehfinalarabic\", 0xfeea,\n \"hehhamzaabovefinalarabic\", 0xfba5,\n \"hehhamzaaboveisolatedarabic\", 0xfba4,\n \"hehinitialaltonearabic\", 0xfba8,\n \"hehinitialarabic\", 0xfeeb,\n \"hehiragana\", 0x3078,\n \"hehmedialaltonearabic\", 0xfba9,\n \"hehmedialarabic\", 0xfeec,\n \"heiseierasquare\", 0x337b,\n \"hekatakana\", 0x30d8,\n \"hekatakanahalfwidth\", 0xff8d,\n \"hekutaarusquare\", 0x3336,\n \"henghook\", 0x0267,\n \"herutusquare\", 0x3339,\n \"het\", 0x05d7,\n \"hethebrew\", 0x05d7,\n \"hhook\", 0x0266,\n \"hhooksuperior\", 0x02b1,\n \"hieuhacirclekorean\", 0x327b,\n \"hieuhaparenkorean\", 0x321b,\n \"hieuhcirclekorean\", 0x326d,\n \"hieuhkorean\", 0x314e,\n \"hieuhparenkorean\", 0x320d,\n \"hihiragana\", 0x3072,\n \"hikatakana\", 0x30d2,\n \"hikatakanahalfwidth\", 0xff8b,\n \"hiriq\", 0x05b4,\n \"hiriq14\", 0x05b4,\n \"hiriq21\", 0x05b4,\n \"hiriq2d\", 0x05b4,\n \"hiriqhebrew\", 0x05b4,\n \"hiriqnarrowhebrew\", 0x05b4,\n \"hiriqquarterhebrew\", 0x05b4,\n \"hiriqwidehebrew\", 0x05b4,\n \"hlinebelow\", 0x1e96,\n \"hmonospace\", 0xff48,\n \"hoarmenian\", 0x0570,\n \"hohipthai\", 0x0e2b,\n \"hohiragana\", 0x307b,\n \"hokatakana\", 0x30db,\n \"hokatakanahalfwidth\", 0xff8e,\n \"holam\", 0x05b9,\n \"holam19\", 0x05b9,\n \"holam26\", 0x05b9,\n \"holam32\", 0x05b9,\n \"holamhebrew\", 0x05b9,\n \"holamnarrowhebrew\", 0x05b9,\n \"holamquarterhebrew\", 0x05b9,\n \"holamwidehebrew\", 0x05b9,\n \"honokhukthai\", 0x0e2e,\n \"hookabovecomb\", 0x0309,\n \"hookcmb\", 0x0309,\n \"hookpalatalizedbelowcmb\", 0x0321,\n \"hookretroflexbelowcmb\", 0x0322,\n \"hoonsquare\", 0x3342,\n \"horicoptic\", 0x03e9,\n \"horizontalbar\", 0x2015,\n \"horncmb\", 0x031b,\n \"hotsprings\", 0x2668,\n \"house\", 0x2302,\n \"hparen\", 0x24a3,\n \"hsuperior\", 0x02b0,\n \"hturned\", 0x0265,\n \"huhiragana\", 0x3075,\n \"huiitosquare\", 0x3333,\n \"hukatakana\", 0x30d5,\n \"hukatakanahalfwidth\", 0xff8c,\n \"hungarumlaut\", 0x02dd,\n \"hungarumlautcmb\", 0x030b,\n \"hv\", 0x0195,\n \"hyphen\", 0x002d,\n \"hypheninferior\", 0xf6e5,\n \"hyphenmonospace\", 0xff0d,\n \"hyphensmall\", 0xfe63,\n \"hyphensuperior\", 0xf6e6,\n \"hyphentwo\", 0x2010,\n \"i\", 0x0069,\n \"iacute\", 0x00ed,\n \"iacyrillic\", 0x044f,\n \"ibengali\", 0x0987,\n \"ibopomofo\", 0x3127,\n \"ibreve\", 0x012d,\n \"icaron\", 0x01d0,\n \"icircle\", 0x24d8,\n \"icircumflex\", 0x00ee,\n \"icyrillic\", 0x0456,\n \"idblgrave\", 0x0209,\n \"ideographearthcircle\", 0x328f,\n \"ideographfirecircle\", 0x328b,\n \"ideographicallianceparen\", 0x323f,\n \"ideographiccallparen\", 0x323a,\n \"ideographiccentrecircle\", 0x32a5,\n \"ideographicclose\", 0x3006,\n \"ideographiccomma\", 0x3001,\n \"ideographiccommaleft\", 0xff64,\n \"ideographiccongratulationparen\", 0x3237,\n \"ideographiccorrectcircle\", 0x32a3,\n \"ideographicearthparen\", 0x322f,\n \"ideographicenterpriseparen\", 0x323d,\n \"ideographicexcellentcircle\", 0x329d,\n \"ideographicfestivalparen\", 0x3240,\n \"ideographicfinancialcircle\", 0x3296,\n \"ideographicfinancialparen\", 0x3236,\n \"ideographicfireparen\", 0x322b,\n \"ideographichaveparen\", 0x3232,\n \"ideographichighcircle\", 0x32a4,\n \"ideographiciterationmark\", 0x3005,\n \"ideographiclaborcircle\", 0x3298,\n \"ideographiclaborparen\", 0x3238,\n \"ideographicleftcircle\", 0x32a7,\n \"ideographiclowcircle\", 0x32a6,\n \"ideographicmedicinecircle\", 0x32a9,\n \"ideographicmetalparen\", 0x322e,\n \"ideographicmoonparen\", 0x322a,\n \"ideographicnameparen\", 0x3234,\n \"ideographicperiod\", 0x3002,\n \"ideographicprintcircle\", 0x329e,\n \"ideographicreachparen\", 0x3243,\n \"ideographicrepresentparen\", 0x3239,\n \"ideographicresourceparen\", 0x323e,\n \"ideographicrightcircle\", 0x32a8,\n \"ideographicsecretcircle\", 0x3299,\n \"ideographicselfparen\", 0x3242,\n \"ideographicsocietyparen\", 0x3233,\n \"ideographicspace\", 0x3000,\n \"ideographicspecialparen\", 0x3235,\n \"ideographicstockparen\", 0x3231,\n \"ideographicstudyparen\", 0x323b,\n \"ideographicsunparen\", 0x3230,\n \"ideographicsuperviseparen\", 0x323c,\n \"ideographicwaterparen\", 0x322c,\n \"ideographicwoodparen\", 0x322d,\n \"ideographiczero\", 0x3007,\n \"ideographmetalcircle\", 0x328e,\n \"ideographmooncircle\", 0x328a,\n \"ideographnamecircle\", 0x3294,\n \"ideographsuncircle\", 0x3290,\n \"ideographwatercircle\", 0x328c,\n \"ideographwoodcircle\", 0x328d,\n \"ideva\", 0x0907,\n \"idieresis\", 0x00ef,\n \"idieresisacute\", 0x1e2f,\n \"idieresiscyrillic\", 0x04e5,\n \"idotbelow\", 0x1ecb,\n \"iebrevecyrillic\", 0x04d7,\n \"iecyrillic\", 0x0435,\n \"ieungacirclekorean\", 0x3275,\n \"ieungaparenkorean\", 0x3215,\n \"ieungcirclekorean\", 0x3267,\n \"ieungkorean\", 0x3147,\n \"ieungparenkorean\", 0x3207,\n \"igrave\", 0x00ec,\n \"igujarati\", 0x0a87,\n \"igurmukhi\", 0x0a07,\n \"ihiragana\", 0x3044,\n \"ihookabove\", 0x1ec9,\n \"iibengali\", 0x0988,\n \"iicyrillic\", 0x0438,\n \"iideva\", 0x0908,\n \"iigujarati\", 0x0a88,\n \"iigurmukhi\", 0x0a08,\n \"iimatragurmukhi\", 0x0a40,\n \"iinvertedbreve\", 0x020b,\n \"iishortcyrillic\", 0x0439,\n \"iivowelsignbengali\", 0x09c0,\n \"iivowelsigndeva\", 0x0940,\n \"iivowelsigngujarati\", 0x0ac0,\n \"ij\", 0x0133,\n \"ikatakana\", 0x30a4,\n \"ikatakanahalfwidth\", 0xff72,\n \"ikorean\", 0x3163,\n \"ilde\", 0x02dc,\n \"iluyhebrew\", 0x05ac,\n \"imacron\", 0x012b,\n \"imacroncyrillic\", 0x04e3,\n \"imageorapproximatelyequal\", 0x2253,\n \"imatragurmukhi\", 0x0a3f,\n \"imonospace\", 0xff49,\n \"increment\", 0x2206,\n \"infinity\", 0x221e,\n \"iniarmenian\", 0x056b,\n \"integral\", 0x222b,\n \"integralbottom\", 0x2321,\n \"integralbt\", 0x2321,\n \"integralex\", 0xf8f5,\n \"integraltop\", 0x2320,\n \"integraltp\", 0x2320,\n \"intersection\", 0x2229,\n \"intisquare\", 0x3305,\n \"invbullet\", 0x25d8,\n \"invcircle\", 0x25d9,\n \"invsmileface\", 0x263b,\n \"iocyrillic\", 0x0451,\n \"iogonek\", 0x012f,\n \"iota\", 0x03b9,\n \"iotadieresis\", 0x03ca,\n \"iotadieresistonos\", 0x0390,\n \"iotalatin\", 0x0269,\n \"iotatonos\", 0x03af,\n \"iparen\", 0x24a4,\n \"irigurmukhi\", 0x0a72,\n \"ismallhiragana\", 0x3043,\n \"ismallkatakana\", 0x30a3,\n \"ismallkatakanahalfwidth\", 0xff68,\n \"issharbengali\", 0x09fa,\n \"istroke\", 0x0268,\n \"isuperior\", 0xf6ed,\n \"iterationhiragana\", 0x309d,\n \"iterationkatakana\", 0x30fd,\n \"itilde\", 0x0129,\n \"itildebelow\", 0x1e2d,\n \"iubopomofo\", 0x3129,\n \"iucyrillic\", 0x044e,\n \"ivowelsignbengali\", 0x09bf,\n \"ivowelsigndeva\", 0x093f,\n \"ivowelsigngujarati\", 0x0abf,\n \"izhitsacyrillic\", 0x0475,\n \"izhitsadblgravecyrillic\", 0x0477,\n \"j\", 0x006a,\n \"jaarmenian\", 0x0571,\n \"jabengali\", 0x099c,\n \"jadeva\", 0x091c,\n \"jagujarati\", 0x0a9c,\n \"jagurmukhi\", 0x0a1c,\n \"jbopomofo\", 0x3110,\n \"jcaron\", 0x01f0,\n \"jcircle\", 0x24d9,\n \"jcircumflex\", 0x0135,\n \"jcrossedtail\", 0x029d,\n \"jdotlessstroke\", 0x025f,\n \"jecyrillic\", 0x0458,\n \"jeemarabic\", 0x062c,\n \"jeemfinalarabic\", 0xfe9e,\n \"jeeminitialarabic\", 0xfe9f,\n \"jeemmedialarabic\", 0xfea0,\n \"jeharabic\", 0x0698,\n \"jehfinalarabic\", 0xfb8b,\n \"jhabengali\", 0x099d,\n \"jhadeva\", 0x091d,\n \"jhagujarati\", 0x0a9d,\n \"jhagurmukhi\", 0x0a1d,\n \"jheharmenian\", 0x057b,\n \"jis\", 0x3004,\n \"jmonospace\", 0xff4a,\n \"jparen\", 0x24a5,\n \"jsuperior\", 0x02b2,\n \"k\", 0x006b,\n \"kabashkircyrillic\", 0x04a1,\n \"kabengali\", 0x0995,\n \"kacute\", 0x1e31,\n \"kacyrillic\", 0x043a,\n \"kadescendercyrillic\", 0x049b,\n \"kadeva\", 0x0915,\n \"kaf\", 0x05db,\n \"kafarabic\", 0x0643,\n \"kafdagesh\", 0xfb3b,\n \"kafdageshhebrew\", 0xfb3b,\n \"kaffinalarabic\", 0xfeda,\n \"kafhebrew\", 0x05db,\n \"kafinitialarabic\", 0xfedb,\n \"kafmedialarabic\", 0xfedc,\n \"kafrafehebrew\", 0xfb4d,\n \"kagujarati\", 0x0a95,\n \"kagurmukhi\", 0x0a15,\n \"kahiragana\", 0x304b,\n \"kahookcyrillic\", 0x04c4,\n \"kakatakana\", 0x30ab,\n \"kakatakanahalfwidth\", 0xff76,\n \"kappa\", 0x03ba,\n \"kappasymbolgreek\", 0x03f0,\n \"kapyeounmieumkorean\", 0x3171,\n \"kapyeounphieuphkorean\", 0x3184,\n \"kapyeounpieupkorean\", 0x3178,\n \"kapyeounssangpieupkorean\", 0x3179,\n \"karoriisquare\", 0x330d,\n \"kashidaautoarabic\", 0x0640,\n \"kashidaautonosidebearingarabic\", 0x0640,\n \"kasmallkatakana\", 0x30f5,\n \"kasquare\", 0x3384,\n \"kasraarabic\", 0x0650,\n \"kasratanarabic\", 0x064d,\n \"kastrokecyrillic\", 0x049f,\n \"katahiraprolongmarkhalfwidth\", 0xff70,\n \"kaverticalstrokecyrillic\", 0x049d,\n \"kbopomofo\", 0x310e,\n \"kcalsquare\", 0x3389,\n \"kcaron\", 0x01e9,\n \"kcedilla\", 0x0137,\n \"kcircle\", 0x24da,\n \"kcommaaccent\", 0x0137,\n \"kdotbelow\", 0x1e33,\n \"keharmenian\", 0x0584,\n \"kehiragana\", 0x3051,\n \"kekatakana\", 0x30b1,\n \"kekatakanahalfwidth\", 0xff79,\n \"kenarmenian\", 0x056f,\n \"kesmallkatakana\", 0x30f6,\n \"kgreenlandic\", 0x0138,\n \"khabengali\", 0x0996,\n \"khacyrillic\", 0x0445,\n \"khadeva\", 0x0916,\n \"khagujarati\", 0x0a96,\n \"khagurmukhi\", 0x0a16,\n \"khaharabic\", 0x062e,\n \"khahfinalarabic\", 0xfea6,\n \"khahinitialarabic\", 0xfea7,\n \"khahmedialarabic\", 0xfea8,\n \"kheicoptic\", 0x03e7,\n \"khhadeva\", 0x0959,\n \"khhagurmukhi\", 0x0a59,\n \"khieukhacirclekorean\", 0x3278,\n \"khieukhaparenkorean\", 0x3218,\n \"khieukhcirclekorean\", 0x326a,\n \"khieukhkorean\", 0x314b,\n \"khieukhparenkorean\", 0x320a,\n \"khokhaithai\", 0x0e02,\n \"khokhonthai\", 0x0e05,\n \"khokhuatthai\", 0x0e03,\n \"khokhwaithai\", 0x0e04,\n \"khomutthai\", 0x0e5b,\n \"khook\", 0x0199,\n \"khorakhangthai\", 0x0e06,\n \"khzsquare\", 0x3391,\n \"kihiragana\", 0x304d,\n \"kikatakana\", 0x30ad,\n \"kikatakanahalfwidth\", 0xff77,\n \"kiroguramusquare\", 0x3315,\n \"kiromeetorusquare\", 0x3316,\n \"kirosquare\", 0x3314,\n \"kiyeokacirclekorean\", 0x326e,\n \"kiyeokaparenkorean\", 0x320e,\n \"kiyeokcirclekorean\", 0x3260,\n \"kiyeokkorean\", 0x3131,\n \"kiyeokparenkorean\", 0x3200,\n \"kiyeoksioskorean\", 0x3133,\n \"kjecyrillic\", 0x045c,\n \"klinebelow\", 0x1e35,\n \"klsquare\", 0x3398,\n \"kmcubedsquare\", 0x33a6,\n \"kmonospace\", 0xff4b,\n \"kmsquaredsquare\", 0x33a2,\n \"kohiragana\", 0x3053,\n \"kohmsquare\", 0x33c0,\n \"kokaithai\", 0x0e01,\n \"kokatakana\", 0x30b3,\n \"kokatakanahalfwidth\", 0xff7a,\n \"kooposquare\", 0x331e,\n \"koppacyrillic\", 0x0481,\n \"koreanstandardsymbol\", 0x327f,\n \"koroniscmb\", 0x0343,\n \"kparen\", 0x24a6,\n \"kpasquare\", 0x33aa,\n \"ksicyrillic\", 0x046f,\n \"ktsquare\", 0x33cf,\n \"kturned\", 0x029e,\n \"kuhiragana\", 0x304f,\n \"kukatakana\", 0x30af,\n \"kukatakanahalfwidth\", 0xff78,\n \"kvsquare\", 0x33b8,\n \"kwsquare\", 0x33be,\n \"l\", 0x006c,\n \"labengali\", 0x09b2,\n \"lacute\", 0x013a,\n \"ladeva\", 0x0932,\n \"lagujarati\", 0x0ab2,\n \"lagurmukhi\", 0x0a32,\n \"lakkhangyaothai\", 0x0e45,\n \"lamaleffinalarabic\", 0xfefc,\n \"lamalefhamzaabovefinalarabic\", 0xfef8,\n \"lamalefhamzaaboveisolatedarabic\", 0xfef7,\n \"lamalefhamzabelowfinalarabic\", 0xfefa,\n \"lamalefhamzabelowisolatedarabic\", 0xfef9,\n \"lamalefisolatedarabic\", 0xfefb,\n \"lamalefmaddaabovefinalarabic\", 0xfef6,\n \"lamalefmaddaaboveisolatedarabic\", 0xfef5,\n \"lamarabic\", 0x0644,\n \"lambda\", 0x03bb,\n \"lambdastroke\", 0x019b,\n \"lamed\", 0x05dc,\n \"lameddagesh\", 0xfb3c,\n \"lameddageshhebrew\", 0xfb3c,\n \"lamedhebrew\", 0x05dc,\n \"lamfinalarabic\", 0xfede,\n \"lamhahinitialarabic\", 0xfcca,\n \"laminitialarabic\", 0xfedf,\n \"lamjeeminitialarabic\", 0xfcc9,\n \"lamkhahinitialarabic\", 0xfccb,\n \"lamlamhehisolatedarabic\", 0xfdf2,\n \"lammedialarabic\", 0xfee0,\n \"lammeemhahinitialarabic\", 0xfd88,\n \"lammeeminitialarabic\", 0xfccc,\n \"largecircle\", 0x25ef,\n \"lbar\", 0x019a,\n \"lbelt\", 0x026c,\n \"lbopomofo\", 0x310c,\n \"lcaron\", 0x013e,\n \"lcedilla\", 0x013c,\n \"lcircle\", 0x24db,\n \"lcircumflexbelow\", 0x1e3d,\n \"lcommaaccent\", 0x013c,\n \"ldot\", 0x0140,\n \"ldotaccent\", 0x0140,\n \"ldotbelow\", 0x1e37,\n \"ldotbelowmacron\", 0x1e39,\n \"leftangleabovecmb\", 0x031a,\n \"lefttackbelowcmb\", 0x0318,\n \"less\", 0x003c,\n \"lessequal\", 0x2264,\n \"lessequalorgreater\", 0x22da,\n \"lessmonospace\", 0xff1c,\n \"lessorequivalent\", 0x2272,\n \"lessorgreater\", 0x2276,\n \"lessoverequal\", 0x2266,\n \"lesssmall\", 0xfe64,\n \"lezh\", 0x026e,\n \"lfblock\", 0x258c,\n \"lhookretroflex\", 0x026d,\n \"lira\", 0x20a4,\n \"liwnarmenian\", 0x056c,\n \"lj\", 0x01c9,\n \"ljecyrillic\", 0x0459,\n \"ll\", 0xf6c0,\n \"lladeva\", 0x0933,\n \"llagujarati\", 0x0ab3,\n \"llinebelow\", 0x1e3b,\n \"llladeva\", 0x0934,\n \"llvocalicbengali\", 0x09e1,\n \"llvocalicdeva\", 0x0961,\n \"llvocalicvowelsignbengali\", 0x09e3,\n \"llvocalicvowelsigndeva\", 0x0963,\n \"lmiddletilde\", 0x026b,\n \"lmonospace\", 0xff4c,\n \"lmsquare\", 0x33d0,\n \"lochulathai\", 0x0e2c,\n \"logicaland\", 0x2227,\n \"logicalnot\", 0x00ac,\n \"logicalnotreversed\", 0x2310,\n \"logicalor\", 0x2228,\n \"lolingthai\", 0x0e25,\n \"longs\", 0x017f,\n \"lowlinecenterline\", 0xfe4e,\n \"lowlinecmb\", 0x0332,\n \"lowlinedashed\", 0xfe4d,\n \"lozenge\", 0x25ca,\n \"lparen\", 0x24a7,\n \"lslash\", 0x0142,\n \"lsquare\", 0x2113,\n \"lsuperior\", 0xf6ee,\n \"ltshade\", 0x2591,\n \"luthai\", 0x0e26,\n \"lvocalicbengali\", 0x098c,\n \"lvocalicdeva\", 0x090c,\n \"lvocalicvowelsignbengali\", 0x09e2,\n \"lvocalicvowelsigndeva\", 0x0962,\n \"lxsquare\", 0x33d3,\n \"m\", 0x006d,\n \"mabengali\", 0x09ae,\n \"macron\", 0x00af,\n \"macronbelowcmb\", 0x0331,\n \"macroncmb\", 0x0304,\n \"macronlowmod\", 0x02cd,\n \"macronmonospace\", 0xffe3,\n \"macute\", 0x1e3f,\n \"madeva\", 0x092e,\n \"magujarati\", 0x0aae,\n \"magurmukhi\", 0x0a2e,\n \"mahapakhhebrew\", 0x05a4,\n \"mahapakhlefthebrew\", 0x05a4,\n \"mahiragana\", 0x307e,\n \"maichattawalowleftthai\", 0xf895,\n \"maichattawalowrightthai\", 0xf894,\n \"maichattawathai\", 0x0e4b,\n \"maichattawaupperleftthai\", 0xf893,\n \"maieklowleftthai\", 0xf88c,\n \"maieklowrightthai\", 0xf88b,\n \"maiekthai\", 0x0e48,\n \"maiekupperleftthai\", 0xf88a,\n \"maihanakatleftthai\", 0xf884,\n \"maihanakatthai\", 0x0e31,\n \"maitaikhuleftthai\", 0xf889,\n \"maitaikhuthai\", 0x0e47,\n \"maitholowleftthai\", 0xf88f,\n \"maitholowrightthai\", 0xf88e,\n \"maithothai\", 0x0e49,\n \"maithoupperleftthai\", 0xf88d,\n \"maitrilowleftthai\", 0xf892,\n \"maitrilowrightthai\", 0xf891,\n \"maitrithai\", 0x0e4a,\n \"maitriupperleftthai\", 0xf890,\n \"maiyamokthai\", 0x0e46,\n \"makatakana\", 0x30de,\n \"makatakanahalfwidth\", 0xff8f,\n \"male\", 0x2642,\n \"mansyonsquare\", 0x3347,\n \"maqafhebrew\", 0x05be,\n \"mars\", 0x2642,\n \"masoracirclehebrew\", 0x05af,\n \"masquare\", 0x3383,\n \"mbopomofo\", 0x3107,\n \"mbsquare\", 0x33d4,\n \"mcircle\", 0x24dc,\n \"mcubedsquare\", 0x33a5,\n \"mdotaccent\", 0x1e41,\n \"mdotbelow\", 0x1e43,\n \"meemarabic\", 0x0645,\n \"meemfinalarabic\", 0xfee2,\n \"meeminitialarabic\", 0xfee3,\n \"meemmedialarabic\", 0xfee4,\n \"meemmeeminitialarabic\", 0xfcd1,\n \"meemmeemisolatedarabic\", 0xfc48,\n \"meetorusquare\", 0x334d,\n \"mehiragana\", 0x3081,\n \"meizierasquare\", 0x337e,\n \"mekatakana\", 0x30e1,\n \"mekatakanahalfwidth\", 0xff92,\n \"mem\", 0x05de,\n \"memdagesh\", 0xfb3e,\n \"memdageshhebrew\", 0xfb3e,\n \"memhebrew\", 0x05de,\n \"menarmenian\", 0x0574,\n \"merkhahebrew\", 0x05a5,\n \"merkhakefulahebrew\", 0x05a6,\n \"merkhakefulalefthebrew\", 0x05a6,\n \"merkhalefthebrew\", 0x05a5,\n \"mhook\", 0x0271,\n \"mhzsquare\", 0x3392,\n \"middledotkatakanahalfwidth\", 0xff65,\n \"middot\", 0x00b7,\n \"mieumacirclekorean\", 0x3272,\n \"mieumaparenkorean\", 0x3212,\n \"mieumcirclekorean\", 0x3264,\n \"mieumkorean\", 0x3141,\n \"mieumpansioskorean\", 0x3170,\n \"mieumparenkorean\", 0x3204,\n \"mieumpieupkorean\", 0x316e,\n \"mieumsioskorean\", 0x316f,\n \"mihiragana\", 0x307f,\n \"mikatakana\", 0x30df,\n \"mikatakanahalfwidth\", 0xff90,\n \"minus\", 0x2212,\n \"minusbelowcmb\", 0x0320,\n \"minuscircle\", 0x2296,\n \"minusmod\", 0x02d7,\n \"minusplus\", 0x2213,\n \"minute\", 0x2032,\n \"miribaarusquare\", 0x334a,\n \"mirisquare\", 0x3349,\n \"mlonglegturned\", 0x0270,\n \"mlsquare\", 0x3396,\n \"mmcubedsquare\", 0x33a3,\n \"mmonospace\", 0xff4d,\n \"mmsquaredsquare\", 0x339f,\n \"mohiragana\", 0x3082,\n \"mohmsquare\", 0x33c1,\n \"mokatakana\", 0x30e2,\n \"mokatakanahalfwidth\", 0xff93,\n \"molsquare\", 0x33d6,\n \"momathai\", 0x0e21,\n \"moverssquare\", 0x33a7,\n \"moverssquaredsquare\", 0x33a8,\n \"mparen\", 0x24a8,\n \"mpasquare\", 0x33ab,\n \"mssquare\", 0x33b3,\n \"msuperior\", 0xf6ef,\n \"mturned\", 0x026f,\n \"mu\", 0x00b5,\n \"mu1\", 0x00b5,\n \"muasquare\", 0x3382,\n \"muchgreater\", 0x226b,\n \"muchless\", 0x226a,\n \"mufsquare\", 0x338c,\n \"mugreek\", 0x03bc,\n \"mugsquare\", 0x338d,\n \"muhiragana\", 0x3080,\n \"mukatakana\", 0x30e0,\n \"mukatakanahalfwidth\", 0xff91,\n \"mulsquare\", 0x3395,\n \"multiply\", 0x00d7,\n \"mumsquare\", 0x339b,\n \"munahhebrew\", 0x05a3,\n \"munahlefthebrew\", 0x05a3,\n \"musicalnote\", 0x266a,\n \"musicalnotedbl\", 0x266b,\n \"musicflatsign\", 0x266d,\n \"musicsharpsign\", 0x266f,\n \"mussquare\", 0x33b2,\n \"muvsquare\", 0x33b6,\n \"muwsquare\", 0x33bc,\n \"mvmegasquare\", 0x33b9,\n \"mvsquare\", 0x33b7,\n \"mwmegasquare\", 0x33bf,\n \"mwsquare\", 0x33bd,\n \"n\", 0x006e,\n \"nabengali\", 0x09a8,\n \"nabla\", 0x2207,\n \"nacute\", 0x0144,\n \"nadeva\", 0x0928,\n \"nagujarati\", 0x0aa8,\n \"nagurmukhi\", 0x0a28,\n \"nahiragana\", 0x306a,\n \"nakatakana\", 0x30ca,\n \"nakatakanahalfwidth\", 0xff85,\n \"napostrophe\", 0x0149,\n \"nasquare\", 0x3381,\n \"nbopomofo\", 0x310b,\n \"nbspace\", 0x00a0,\n \"ncaron\", 0x0148,\n \"ncedilla\", 0x0146,\n \"ncircle\", 0x24dd,\n \"ncircumflexbelow\", 0x1e4b,\n \"ncommaaccent\", 0x0146,\n \"ndotaccent\", 0x1e45,\n \"ndotbelow\", 0x1e47,\n \"nehiragana\", 0x306d,\n \"nekatakana\", 0x30cd,\n \"nekatakanahalfwidth\", 0xff88,\n \"newsheqelsign\", 0x20aa,\n \"nfsquare\", 0x338b,\n \"ngabengali\", 0x0999,\n \"ngadeva\", 0x0919,\n \"ngagujarati\", 0x0a99,\n \"ngagurmukhi\", 0x0a19,\n \"ngonguthai\", 0x0e07,\n \"nhiragana\", 0x3093,\n \"nhookleft\", 0x0272,\n \"nhookretroflex\", 0x0273,\n \"nieunacirclekorean\", 0x326f,\n \"nieunaparenkorean\", 0x320f,\n \"nieuncieuckorean\", 0x3135,\n \"nieuncirclekorean\", 0x3261,\n \"nieunhieuhkorean\", 0x3136,\n \"nieunkorean\", 0x3134,\n \"nieunpansioskorean\", 0x3168,\n \"nieunparenkorean\", 0x3201,\n \"nieunsioskorean\", 0x3167,\n \"nieuntikeutkorean\", 0x3166,\n \"nihiragana\", 0x306b,\n \"nikatakana\", 0x30cb,\n \"nikatakanahalfwidth\", 0xff86,\n \"nikhahitleftthai\", 0xf899,\n \"nikhahitthai\", 0x0e4d,\n \"nine\", 0x0039,\n \"ninearabic\", 0x0669,\n \"ninebengali\", 0x09ef,\n \"ninecircle\", 0x2468,\n \"ninecircleinversesansserif\", 0x2792,\n \"ninedeva\", 0x096f,\n \"ninegujarati\", 0x0aef,\n \"ninegurmukhi\", 0x0a6f,\n \"ninehackarabic\", 0x0669,\n \"ninehangzhou\", 0x3029,\n \"nineideographicparen\", 0x3228,\n \"nineinferior\", 0x2089,\n \"ninemonospace\", 0xff19,\n \"nineoldstyle\", 0xf739,\n \"nineparen\", 0x247c,\n \"nineperiod\", 0x2490,\n \"ninepersian\", 0x06f9,\n \"nineroman\", 0x2178,\n \"ninesuperior\", 0x2079,\n \"nineteencircle\", 0x2472,\n \"nineteenparen\", 0x2486,\n \"nineteenperiod\", 0x249a,\n \"ninethai\", 0x0e59,\n \"nj\", 0x01cc,\n \"njecyrillic\", 0x045a,\n \"nkatakana\", 0x30f3,\n \"nkatakanahalfwidth\", 0xff9d,\n \"nlegrightlong\", 0x019e,\n \"nlinebelow\", 0x1e49,\n \"nmonospace\", 0xff4e,\n \"nmsquare\", 0x339a,\n \"nnabengali\", 0x09a3,\n \"nnadeva\", 0x0923,\n \"nnagujarati\", 0x0aa3,\n \"nnagurmukhi\", 0x0a23,\n \"nnnadeva\", 0x0929,\n \"nohiragana\", 0x306e,\n \"nokatakana\", 0x30ce,\n \"nokatakanahalfwidth\", 0xff89,\n \"nonbreakingspace\", 0x00a0,\n \"nonenthai\", 0x0e13,\n \"nonuthai\", 0x0e19,\n \"noonarabic\", 0x0646,\n \"noonfinalarabic\", 0xfee6,\n \"noonghunnaarabic\", 0x06ba,\n \"noonghunnafinalarabic\", 0xfb9f,\n \"nooninitialarabic\", 0xfee7,\n \"noonjeeminitialarabic\", 0xfcd2,\n \"noonjeemisolatedarabic\", 0xfc4b,\n \"noonmedialarabic\", 0xfee8,\n \"noonmeeminitialarabic\", 0xfcd5,\n \"noonmeemisolatedarabic\", 0xfc4e,\n \"noonnoonfinalarabic\", 0xfc8d,\n \"notcontains\", 0x220c,\n \"notelement\", 0x2209,\n \"notelementof\", 0x2209,\n \"notequal\", 0x2260,\n \"notgreater\", 0x226f,\n \"notgreaternorequal\", 0x2271,\n \"notgreaternorless\", 0x2279,\n \"notidentical\", 0x2262,\n \"notless\", 0x226e,\n \"notlessnorequal\", 0x2270,\n \"notparallel\", 0x2226,\n \"notprecedes\", 0x2280,\n \"notsubset\", 0x2284,\n \"notsucceeds\", 0x2281,\n \"notsuperset\", 0x2285,\n \"nowarmenian\", 0x0576,\n \"nparen\", 0x24a9,\n \"nssquare\", 0x33b1,\n \"nsuperior\", 0x207f,\n \"ntilde\", 0x00f1,\n \"nu\", 0x03bd,\n \"nuhiragana\", 0x306c,\n \"nukatakana\", 0x30cc,\n \"nukatakanahalfwidth\", 0xff87,\n \"nuktabengali\", 0x09bc,\n \"nuktadeva\", 0x093c,\n \"nuktagujarati\", 0x0abc,\n \"nuktagurmukhi\", 0x0a3c,\n \"numbersign\", 0x0023,\n \"numbersignmonospace\", 0xff03,\n \"numbersignsmall\", 0xfe5f,\n \"numeralsigngreek\", 0x0374,\n \"numeralsignlowergreek\", 0x0375,\n \"numero\", 0x2116,\n \"nun\", 0x05e0,\n \"nundagesh\", 0xfb40,\n \"nundageshhebrew\", 0xfb40,\n \"nunhebrew\", 0x05e0,\n \"nvsquare\", 0x33b5,\n \"nwsquare\", 0x33bb,\n \"nyabengali\", 0x099e,\n \"nyadeva\", 0x091e,\n \"nyagujarati\", 0x0a9e,\n \"nyagurmukhi\", 0x0a1e,\n \"o\", 0x006f,\n \"oacute\", 0x00f3,\n \"oangthai\", 0x0e2d,\n \"obarred\", 0x0275,\n \"obarredcyrillic\", 0x04e9,\n \"obarreddieresiscyrillic\", 0x04eb,\n \"obengali\", 0x0993,\n \"obopomofo\", 0x311b,\n \"obreve\", 0x014f,\n \"ocandradeva\", 0x0911,\n \"ocandragujarati\", 0x0a91,\n \"ocandravowelsigndeva\", 0x0949,\n \"ocandravowelsigngujarati\", 0x0ac9,\n \"ocaron\", 0x01d2,\n \"ocircle\", 0x24de,\n \"ocircumflex\", 0x00f4,\n \"ocircumflexacute\", 0x1ed1,\n \"ocircumflexdotbelow\", 0x1ed9,\n \"ocircumflexgrave\", 0x1ed3,\n \"ocircumflexhookabove\", 0x1ed5,\n \"ocircumflextilde\", 0x1ed7,\n \"ocyrillic\", 0x043e,\n \"odblacute\", 0x0151,\n \"odblgrave\", 0x020d,\n \"odeva\", 0x0913,\n \"odieresis\", 0x00f6,\n \"odieresiscyrillic\", 0x04e7,\n \"odotbelow\", 0x1ecd,\n \"oe\", 0x0153,\n \"oekorean\", 0x315a,\n \"ogonek\", 0x02db,\n \"ogonekcmb\", 0x0328,\n \"ograve\", 0x00f2,\n \"ogujarati\", 0x0a93,\n \"oharmenian\", 0x0585,\n \"ohiragana\", 0x304a,\n \"ohookabove\", 0x1ecf,\n \"ohorn\", 0x01a1,\n \"ohornacute\", 0x1edb,\n \"ohorndotbelow\", 0x1ee3,\n \"ohorngrave\", 0x1edd,\n \"ohornhookabove\", 0x1edf,\n \"ohorntilde\", 0x1ee1,\n \"ohungarumlaut\", 0x0151,\n \"oi\", 0x01a3,\n \"oinvertedbreve\", 0x020f,\n \"okatakana\", 0x30aa,\n \"okatakanahalfwidth\", 0xff75,\n \"okorean\", 0x3157,\n \"olehebrew\", 0x05ab,\n \"omacron\", 0x014d,\n \"omacronacute\", 0x1e53,\n \"omacrongrave\", 0x1e51,\n \"omdeva\", 0x0950,\n \"omega\", 0x03c9,\n \"omega1\", 0x03d6,\n \"omegacyrillic\", 0x0461,\n \"omegalatinclosed\", 0x0277,\n \"omegaroundcyrillic\", 0x047b,\n \"omegatitlocyrillic\", 0x047d,\n \"omegatonos\", 0x03ce,\n \"omgujarati\", 0x0ad0,\n \"omicron\", 0x03bf,\n \"omicrontonos\", 0x03cc,\n \"omonospace\", 0xff4f,\n \"one\", 0x0031,\n \"onearabic\", 0x0661,\n \"onebengali\", 0x09e7,\n \"onecircle\", 0x2460,\n \"onecircleinversesansserif\", 0x278a,\n \"onedeva\", 0x0967,\n \"onedotenleader\", 0x2024,\n \"oneeighth\", 0x215b,\n \"onefitted\", 0xf6dc,\n \"onegujarati\", 0x0ae7,\n \"onegurmukhi\", 0x0a67,\n \"onehackarabic\", 0x0661,\n \"onehalf\", 0x00bd,\n \"onehangzhou\", 0x3021,\n \"oneideographicparen\", 0x3220,\n \"oneinferior\", 0x2081,\n \"onemonospace\", 0xff11,\n \"onenumeratorbengali\", 0x09f4,\n \"oneoldstyle\", 0xf731,\n \"oneparen\", 0x2474,\n \"oneperiod\", 0x2488,\n \"onepersian\", 0x06f1,\n \"onequarter\", 0x00bc,\n \"oneroman\", 0x2170,\n \"onesuperior\", 0x00b9,\n \"onethai\", 0x0e51,\n \"onethird\", 0x2153,\n \"oogonek\", 0x01eb,\n \"oogonekmacron\", 0x01ed,\n \"oogurmukhi\", 0x0a13,\n \"oomatragurmukhi\", 0x0a4b,\n \"oopen\", 0x0254,\n \"oparen\", 0x24aa,\n \"openbullet\", 0x25e6,\n \"option\", 0x2325,\n \"ordfeminine\", 0x00aa,\n \"ordmasculine\", 0x00ba,\n \"orthogonal\", 0x221f,\n \"oshortdeva\", 0x0912,\n \"oshortvowelsigndeva\", 0x094a,\n \"oslash\", 0x00f8,\n \"oslashacute\", 0x01ff,\n \"osmallhiragana\", 0x3049,\n \"osmallkatakana\", 0x30a9,\n \"osmallkatakanahalfwidth\", 0xff6b,\n \"ostrokeacute\", 0x01ff,\n \"osuperior\", 0xf6f0,\n \"otcyrillic\", 0x047f,\n \"otilde\", 0x00f5,\n \"otildeacute\", 0x1e4d,\n \"otildedieresis\", 0x1e4f,\n \"oubopomofo\", 0x3121,\n \"overline\", 0x203e,\n \"overlinecenterline\", 0xfe4a,\n \"overlinecmb\", 0x0305,\n \"overlinedashed\", 0xfe49,\n \"overlinedblwavy\", 0xfe4c,\n \"overlinewavy\", 0xfe4b,\n \"overscore\", 0x00af,\n \"ovowelsignbengali\", 0x09cb,\n \"ovowelsigndeva\", 0x094b,\n \"ovowelsigngujarati\", 0x0acb,\n \"p\", 0x0070,\n \"paampssquare\", 0x3380,\n \"paasentosquare\", 0x332b,\n \"pabengali\", 0x09aa,\n \"pacute\", 0x1e55,\n \"padeva\", 0x092a,\n \"pagedown\", 0x21df,\n \"pageup\", 0x21de,\n \"pagujarati\", 0x0aaa,\n \"pagurmukhi\", 0x0a2a,\n \"pahiragana\", 0x3071,\n \"paiyannoithai\", 0x0e2f,\n \"pakatakana\", 0x30d1,\n \"palatalizationcyrilliccmb\", 0x0484,\n \"palochkacyrillic\", 0x04c0,\n \"pansioskorean\", 0x317f,\n \"paragraph\", 0x00b6,\n \"parallel\", 0x2225,\n \"parenleft\", 0x0028,\n \"parenleftaltonearabic\", 0xfd3e,\n \"parenleftbt\", 0xf8ed,\n \"parenleftex\", 0xf8ec,\n \"parenleftinferior\", 0x208d,\n \"parenleftmonospace\", 0xff08,\n \"parenleftsmall\", 0xfe59,\n \"parenleftsuperior\", 0x207d,\n \"parenlefttp\", 0xf8eb,\n \"parenleftvertical\", 0xfe35,\n \"parenright\", 0x0029,\n \"parenrightaltonearabic\", 0xfd3f,\n \"parenrightbt\", 0xf8f8,\n \"parenrightex\", 0xf8f7,\n \"parenrightinferior\", 0x208e,\n \"parenrightmonospace\", 0xff09,\n \"parenrightsmall\", 0xfe5a,\n \"parenrightsuperior\", 0x207e,\n \"parenrighttp\", 0xf8f6,\n \"parenrightvertical\", 0xfe36,\n \"partialdiff\", 0x2202,\n \"paseqhebrew\", 0x05c0,\n \"pashtahebrew\", 0x0599,\n \"pasquare\", 0x33a9,\n \"patah\", 0x05b7,\n \"patah11\", 0x05b7,\n \"patah1d\", 0x05b7,\n \"patah2a\", 0x05b7,\n \"patahhebrew\", 0x05b7,\n \"patahnarrowhebrew\", 0x05b7,\n \"patahquarterhebrew\", 0x05b7,\n \"patahwidehebrew\", 0x05b7,\n \"pazerhebrew\", 0x05a1,\n \"pbopomofo\", 0x3106,\n \"pcircle\", 0x24df,\n \"pdotaccent\", 0x1e57,\n \"pe\", 0x05e4,\n \"pecyrillic\", 0x043f,\n \"pedagesh\", 0xfb44,\n \"pedageshhebrew\", 0xfb44,\n \"peezisquare\", 0x333b,\n \"pefinaldageshhebrew\", 0xfb43,\n \"peharabic\", 0x067e,\n \"peharmenian\", 0x057a,\n \"pehebrew\", 0x05e4,\n \"pehfinalarabic\", 0xfb57,\n \"pehinitialarabic\", 0xfb58,\n \"pehiragana\", 0x307a,\n \"pehmedialarabic\", 0xfb59,\n \"pekatakana\", 0x30da,\n \"pemiddlehookcyrillic\", 0x04a7,\n \"perafehebrew\", 0xfb4e,\n \"percent\", 0x0025,\n \"percentarabic\", 0x066a,\n \"percentmonospace\", 0xff05,\n \"percentsmall\", 0xfe6a,\n \"period\", 0x002e,\n \"periodarmenian\", 0x0589,\n \"periodcentered\", 0x00b7,\n \"periodhalfwidth\", 0xff61,\n \"periodinferior\", 0xf6e7,\n \"periodmonospace\", 0xff0e,\n \"periodsmall\", 0xfe52,\n \"periodsuperior\", 0xf6e8,\n \"perispomenigreekcmb\", 0x0342,\n \"perpendicular\", 0x22a5,\n \"perthousand\", 0x2030,\n \"peseta\", 0x20a7,\n \"pfsquare\", 0x338a,\n \"phabengali\", 0x09ab,\n \"phadeva\", 0x092b,\n \"phagujarati\", 0x0aab,\n \"phagurmukhi\", 0x0a2b,\n \"phi\", 0x03c6,\n \"phi1\", 0x03d5,\n \"phieuphacirclekorean\", 0x327a,\n \"phieuphaparenkorean\", 0x321a,\n \"phieuphcirclekorean\", 0x326c,\n \"phieuphkorean\", 0x314d,\n \"phieuphparenkorean\", 0x320c,\n \"philatin\", 0x0278,\n \"phinthuthai\", 0x0e3a,\n \"phisymbolgreek\", 0x03d5,\n \"phook\", 0x01a5,\n \"phophanthai\", 0x0e1e,\n \"phophungthai\", 0x0e1c,\n \"phosamphaothai\", 0x0e20,\n \"pi\", 0x03c0,\n \"pieupacirclekorean\", 0x3273,\n \"pieupaparenkorean\", 0x3213,\n \"pieupcieuckorean\", 0x3176,\n \"pieupcirclekorean\", 0x3265,\n \"pieupkiyeokkorean\", 0x3172,\n \"pieupkorean\", 0x3142,\n \"pieupparenkorean\", 0x3205,\n \"pieupsioskiyeokkorean\", 0x3174,\n \"pieupsioskorean\", 0x3144,\n \"pieupsiostikeutkorean\", 0x3175,\n \"pieupthieuthkorean\", 0x3177,\n \"pieuptikeutkorean\", 0x3173,\n \"pihiragana\", 0x3074,\n \"pikatakana\", 0x30d4,\n \"pisymbolgreek\", 0x03d6,\n \"piwrarmenian\", 0x0583,\n \"plus\", 0x002b,\n \"plusbelowcmb\", 0x031f,\n \"pluscircle\", 0x2295,\n \"plusminus\", 0x00b1,\n \"plusmod\", 0x02d6,\n \"plusmonospace\", 0xff0b,\n \"plussmall\", 0xfe62,\n \"plussuperior\", 0x207a,\n \"pmonospace\", 0xff50,\n \"pmsquare\", 0x33d8,\n \"pohiragana\", 0x307d,\n \"pointingindexdownwhite\", 0x261f,\n \"pointingindexleftwhite\", 0x261c,\n \"pointingindexrightwhite\", 0x261e,\n \"pointingindexupwhite\", 0x261d,\n \"pokatakana\", 0x30dd,\n \"poplathai\", 0x0e1b,\n \"postalmark\", 0x3012,\n \"postalmarkface\", 0x3020,\n \"pparen\", 0x24ab,\n \"precedes\", 0x227a,\n \"prescription\", 0x211e,\n \"primemod\", 0x02b9,\n \"primereversed\", 0x2035,\n \"product\", 0x220f,\n \"projective\", 0x2305,\n \"prolongedkana\", 0x30fc,\n \"propellor\", 0x2318,\n \"propersubset\", 0x2282,\n \"propersuperset\", 0x2283,\n \"proportion\", 0x2237,\n \"proportional\", 0x221d,\n \"psi\", 0x03c8,\n \"psicyrillic\", 0x0471,\n \"psilipneumatacyrilliccmb\", 0x0486,\n \"pssquare\", 0x33b0,\n \"puhiragana\", 0x3077,\n \"pukatakana\", 0x30d7,\n \"pvsquare\", 0x33b4,\n \"pwsquare\", 0x33ba,\n \"q\", 0x0071,\n \"qadeva\", 0x0958,\n \"qadmahebrew\", 0x05a8,\n \"qafarabic\", 0x0642,\n \"qaffinalarabic\", 0xfed6,\n \"qafinitialarabic\", 0xfed7,\n \"qafmedialarabic\", 0xfed8,\n \"qamats\", 0x05b8,\n \"qamats10\", 0x05b8,\n \"qamats1a\", 0x05b8,\n \"qamats1c\", 0x05b8,\n \"qamats27\", 0x05b8,\n \"qamats29\", 0x05b8,\n \"qamats33\", 0x05b8,\n \"qamatsde\", 0x05b8,\n \"qamatshebrew\", 0x05b8,\n \"qamatsnarrowhebrew\", 0x05b8,\n \"qamatsqatanhebrew\", 0x05b8,\n \"qamatsqatannarrowhebrew\", 0x05b8,\n \"qamatsqatanquarterhebrew\", 0x05b8,\n \"qamatsqatanwidehebrew\", 0x05b8,\n \"qamatsquarterhebrew\", 0x05b8,\n \"qamatswidehebrew\", 0x05b8,\n \"qarneyparahebrew\", 0x059f,\n \"qbopomofo\", 0x3111,\n \"qcircle\", 0x24e0,\n \"qhook\", 0x02a0,\n \"qmonospace\", 0xff51,\n \"qof\", 0x05e7,\n \"qofdagesh\", 0xfb47,\n \"qofdageshhebrew\", 0xfb47,\n \"qofhebrew\", 0x05e7,\n \"qparen\", 0x24ac,\n \"quarternote\", 0x2669,\n \"qubuts\", 0x05bb,\n \"qubuts18\", 0x05bb,\n \"qubuts25\", 0x05bb,\n \"qubuts31\", 0x05bb,\n \"qubutshebrew\", 0x05bb,\n \"qubutsnarrowhebrew\", 0x05bb,\n \"qubutsquarterhebrew\", 0x05bb,\n \"qubutswidehebrew\", 0x05bb,\n \"question\", 0x003f,\n \"questionarabic\", 0x061f,\n \"questionarmenian\", 0x055e,\n \"questiondown\", 0x00bf,\n \"questiondownsmall\", 0xf7bf,\n \"questiongreek\", 0x037e,\n \"questionmonospace\", 0xff1f,\n \"questionsmall\", 0xf73f,\n \"quotedbl\", 0x0022,\n \"quotedblbase\", 0x201e,\n \"quotedblleft\", 0x201c,\n \"quotedblmonospace\", 0xff02,\n \"quotedblprime\", 0x301e,\n \"quotedblprimereversed\", 0x301d,\n \"quotedblright\", 0x201d,\n \"quoteleft\", 0x2018,\n \"quoteleftreversed\", 0x201b,\n \"quotereversed\", 0x201b,\n \"quoteright\", 0x2019,\n \"quoterightn\", 0x0149,\n \"quotesinglbase\", 0x201a,\n \"quotesingle\", 0x0027,\n \"quotesinglemonospace\", 0xff07,\n \"r\", 0x0072,\n \"raarmenian\", 0x057c,\n \"rabengali\", 0x09b0,\n \"racute\", 0x0155,\n \"radeva\", 0x0930,\n \"radical\", 0x221a,\n \"radicalex\", 0xf8e5,\n \"radoverssquare\", 0x33ae,\n \"radoverssquaredsquare\", 0x33af,\n \"radsquare\", 0x33ad,\n \"rafe\", 0x05bf,\n \"rafehebrew\", 0x05bf,\n \"ragujarati\", 0x0ab0,\n \"ragurmukhi\", 0x0a30,\n \"rahiragana\", 0x3089,\n \"rakatakana\", 0x30e9,\n \"rakatakanahalfwidth\", 0xff97,\n \"ralowerdiagonalbengali\", 0x09f1,\n \"ramiddlediagonalbengali\", 0x09f0,\n \"ramshorn\", 0x0264,\n \"ratio\", 0x2236,\n \"rbopomofo\", 0x3116,\n \"rcaron\", 0x0159,\n \"rcedilla\", 0x0157,\n \"rcircle\", 0x24e1,\n \"rcommaaccent\", 0x0157,\n \"rdblgrave\", 0x0211,\n \"rdotaccent\", 0x1e59,\n \"rdotbelow\", 0x1e5b,\n \"rdotbelowmacron\", 0x1e5d,\n \"referencemark\", 0x203b,\n \"reflexsubset\", 0x2286,\n \"reflexsuperset\", 0x2287,\n \"registered\", 0x00ae,\n \"registersans\", 0xf8e8,\n \"registerserif\", 0xf6da,\n \"reharabic\", 0x0631,\n \"reharmenian\", 0x0580,\n \"rehfinalarabic\", 0xfeae,\n \"rehiragana\", 0x308c,\n \"rekatakana\", 0x30ec,\n \"rekatakanahalfwidth\", 0xff9a,\n \"resh\", 0x05e8,\n \"reshdageshhebrew\", 0xfb48,\n \"reshhebrew\", 0x05e8,\n \"reversedtilde\", 0x223d,\n \"reviahebrew\", 0x0597,\n \"reviamugrashhebrew\", 0x0597,\n \"revlogicalnot\", 0x2310,\n \"rfishhook\", 0x027e,\n \"rfishhookreversed\", 0x027f,\n \"rhabengali\", 0x09dd,\n \"rhadeva\", 0x095d,\n \"rho\", 0x03c1,\n \"rhook\", 0x027d,\n \"rhookturned\", 0x027b,\n \"rhookturnedsuperior\", 0x02b5,\n \"rhosymbolgreek\", 0x03f1,\n \"rhotichookmod\", 0x02de,\n \"rieulacirclekorean\", 0x3271,\n \"rieulaparenkorean\", 0x3211,\n \"rieulcirclekorean\", 0x3263,\n \"rieulhieuhkorean\", 0x3140,\n \"rieulkiyeokkorean\", 0x313a,\n \"rieulkiyeoksioskorean\", 0x3169,\n \"rieulkorean\", 0x3139,\n \"rieulmieumkorean\", 0x313b,\n \"rieulpansioskorean\", 0x316c,\n \"rieulparenkorean\", 0x3203,\n \"rieulphieuphkorean\", 0x313f,\n \"rieulpieupkorean\", 0x313c,\n \"rieulpieupsioskorean\", 0x316b,\n \"rieulsioskorean\", 0x313d,\n \"rieulthieuthkorean\", 0x313e,\n \"rieultikeutkorean\", 0x316a,\n \"rieulyeorinhieuhkorean\", 0x316d,\n \"rightangle\", 0x221f,\n \"righttackbelowcmb\", 0x0319,\n \"righttriangle\", 0x22bf,\n \"rihiragana\", 0x308a,\n \"rikatakana\", 0x30ea,\n \"rikatakanahalfwidth\", 0xff98,\n \"ring\", 0x02da,\n \"ringbelowcmb\", 0x0325,\n \"ringcmb\", 0x030a,\n \"ringhalfleft\", 0x02bf,\n \"ringhalfleftarmenian\", 0x0559,\n \"ringhalfleftbelowcmb\", 0x031c,\n \"ringhalfleftcentered\", 0x02d3,\n \"ringhalfright\", 0x02be,\n \"ringhalfrightbelowcmb\", 0x0339,\n \"ringhalfrightcentered\", 0x02d2,\n \"rinvertedbreve\", 0x0213,\n \"rittorusquare\", 0x3351,\n \"rlinebelow\", 0x1e5f,\n \"rlongleg\", 0x027c,\n \"rlonglegturned\", 0x027a,\n \"rmonospace\", 0xff52,\n \"rohiragana\", 0x308d,\n \"rokatakana\", 0x30ed,\n \"rokatakanahalfwidth\", 0xff9b,\n \"roruathai\", 0x0e23,\n \"rparen\", 0x24ad,\n \"rrabengali\", 0x09dc,\n \"rradeva\", 0x0931,\n \"rragurmukhi\", 0x0a5c,\n \"rreharabic\", 0x0691,\n \"rrehfinalarabic\", 0xfb8d,\n \"rrvocalicbengali\", 0x09e0,\n \"rrvocalicdeva\", 0x0960,\n \"rrvocalicgujarati\", 0x0ae0,\n \"rrvocalicvowelsignbengali\", 0x09c4,\n \"rrvocalicvowelsigndeva\", 0x0944,\n \"rrvocalicvowelsigngujarati\", 0x0ac4,\n \"rsuperior\", 0xf6f1,\n \"rtblock\", 0x2590,\n \"rturned\", 0x0279,\n \"rturnedsuperior\", 0x02b4,\n \"ruhiragana\", 0x308b,\n \"rukatakana\", 0x30eb,\n \"rukatakanahalfwidth\", 0xff99,\n \"rupeemarkbengali\", 0x09f2,\n \"rupeesignbengali\", 0x09f3,\n \"rupiah\", 0xf6dd,\n \"ruthai\", 0x0e24,\n \"rvocalicbengali\", 0x098b,\n \"rvocalicdeva\", 0x090b,\n \"rvocalicgujarati\", 0x0a8b,\n \"rvocalicvowelsignbengali\", 0x09c3,\n \"rvocalicvowelsigndeva\", 0x0943,\n \"rvocalicvowelsigngujarati\", 0x0ac3,\n \"s\", 0x0073,\n \"sabengali\", 0x09b8,\n \"sacute\", 0x015b,\n \"sacutedotaccent\", 0x1e65,\n \"sadarabic\", 0x0635,\n \"sadeva\", 0x0938,\n \"sadfinalarabic\", 0xfeba,\n \"sadinitialarabic\", 0xfebb,\n \"sadmedialarabic\", 0xfebc,\n \"sagujarati\", 0x0ab8,\n \"sagurmukhi\", 0x0a38,\n \"sahiragana\", 0x3055,\n \"sakatakana\", 0x30b5,\n \"sakatakanahalfwidth\", 0xff7b,\n \"sallallahoualayhewasallamarabic\", 0xfdfa,\n \"samekh\", 0x05e1,\n \"samekhdagesh\", 0xfb41,\n \"samekhdageshhebrew\", 0xfb41,\n \"samekhhebrew\", 0x05e1,\n \"saraaathai\", 0x0e32,\n \"saraaethai\", 0x0e41,\n \"saraaimaimalaithai\", 0x0e44,\n \"saraaimaimuanthai\", 0x0e43,\n \"saraamthai\", 0x0e33,\n \"saraathai\", 0x0e30,\n \"saraethai\", 0x0e40,\n \"saraiileftthai\", 0xf886,\n \"saraiithai\", 0x0e35,\n \"saraileftthai\", 0xf885,\n \"saraithai\", 0x0e34,\n \"saraothai\", 0x0e42,\n \"saraueeleftthai\", 0xf888,\n \"saraueethai\", 0x0e37,\n \"saraueleftthai\", 0xf887,\n \"sarauethai\", 0x0e36,\n \"sarauthai\", 0x0e38,\n \"sarauuthai\", 0x0e39,\n \"sbopomofo\", 0x3119,\n \"scaron\", 0x0161,\n \"scarondotaccent\", 0x1e67,\n \"scedilla\", 0x015f,\n \"schwa\", 0x0259,\n \"schwacyrillic\", 0x04d9,\n \"schwadieresiscyrillic\", 0x04db,\n \"schwahook\", 0x025a,\n \"scircle\", 0x24e2,\n \"scircumflex\", 0x015d,\n \"scommaaccent\", 0x0219,\n \"sdotaccent\", 0x1e61,\n \"sdotbelow\", 0x1e63,\n \"sdotbelowdotaccent\", 0x1e69,\n \"seagullbelowcmb\", 0x033c,\n \"second\", 0x2033,\n \"secondtonechinese\", 0x02ca,\n \"section\", 0x00a7,\n \"seenarabic\", 0x0633,\n \"seenfinalarabic\", 0xfeb2,\n \"seeninitialarabic\", 0xfeb3,\n \"seenmedialarabic\", 0xfeb4,\n \"segol\", 0x05b6,\n \"segol13\", 0x05b6,\n \"segol1f\", 0x05b6,\n \"segol2c\", 0x05b6,\n \"segolhebrew\", 0x05b6,\n \"segolnarrowhebrew\", 0x05b6,\n \"segolquarterhebrew\", 0x05b6,\n \"segoltahebrew\", 0x0592,\n \"segolwidehebrew\", 0x05b6,\n \"seharmenian\", 0x057d,\n \"sehiragana\", 0x305b,\n \"sekatakana\", 0x30bb,\n \"sekatakanahalfwidth\", 0xff7e,\n \"semicolon\", 0x003b,\n \"semicolonarabic\", 0x061b,\n \"semicolonmonospace\", 0xff1b,\n \"semicolonsmall\", 0xfe54,\n \"semivoicedmarkkana\", 0x309c,\n \"semivoicedmarkkanahalfwidth\", 0xff9f,\n \"sentisquare\", 0x3322,\n \"sentosquare\", 0x3323,\n \"seven\", 0x0037,\n \"sevenarabic\", 0x0667,\n \"sevenbengali\", 0x09ed,\n \"sevencircle\", 0x2466,\n \"sevencircleinversesansserif\", 0x2790,\n \"sevendeva\", 0x096d,\n \"seveneighths\", 0x215e,\n \"sevengujarati\", 0x0aed,\n \"sevengurmukhi\", 0x0a6d,\n \"sevenhackarabic\", 0x0667,\n \"sevenhangzhou\", 0x3027,\n \"sevenideographicparen\", 0x3226,\n \"seveninferior\", 0x2087,\n \"sevenmonospace\", 0xff17,\n \"sevenoldstyle\", 0xf737,\n \"sevenparen\", 0x247a,\n \"sevenperiod\", 0x248e,\n \"sevenpersian\", 0x06f7,\n \"sevenroman\", 0x2176,\n \"sevensuperior\", 0x2077,\n \"seventeencircle\", 0x2470,\n \"seventeenparen\", 0x2484,\n \"seventeenperiod\", 0x2498,\n \"seventhai\", 0x0e57,\n \"sfthyphen\", 0x00ad,\n \"shaarmenian\", 0x0577,\n \"shabengali\", 0x09b6,\n \"shacyrillic\", 0x0448,\n \"shaddaarabic\", 0x0651,\n \"shaddadammaarabic\", 0xfc61,\n \"shaddadammatanarabic\", 0xfc5e,\n \"shaddafathaarabic\", 0xfc60,\n \"shaddakasraarabic\", 0xfc62,\n \"shaddakasratanarabic\", 0xfc5f,\n \"shade\", 0x2592,\n \"shadedark\", 0x2593,\n \"shadelight\", 0x2591,\n \"shademedium\", 0x2592,\n \"shadeva\", 0x0936,\n \"shagujarati\", 0x0ab6,\n \"shagurmukhi\", 0x0a36,\n \"shalshelethebrew\", 0x0593,\n \"shbopomofo\", 0x3115,\n \"shchacyrillic\", 0x0449,\n \"sheenarabic\", 0x0634,\n \"sheenfinalarabic\", 0xfeb6,\n \"sheeninitialarabic\", 0xfeb7,\n \"sheenmedialarabic\", 0xfeb8,\n \"sheicoptic\", 0x03e3,\n \"sheqel\", 0x20aa,\n \"sheqelhebrew\", 0x20aa,\n \"sheva\", 0x05b0,\n \"sheva115\", 0x05b0,\n \"sheva15\", 0x05b0,\n \"sheva22\", 0x05b0,\n \"sheva2e\", 0x05b0,\n \"shevahebrew\", 0x05b0,\n \"shevanarrowhebrew\", 0x05b0,\n \"shevaquarterhebrew\", 0x05b0,\n \"shevawidehebrew\", 0x05b0,\n \"shhacyrillic\", 0x04bb,\n \"shimacoptic\", 0x03ed,\n \"shin\", 0x05e9,\n \"shindagesh\", 0xfb49,\n \"shindageshhebrew\", 0xfb49,\n \"shindageshshindot\", 0xfb2c,\n \"shindageshshindothebrew\", 0xfb2c,\n \"shindageshsindot\", 0xfb2d,\n \"shindageshsindothebrew\", 0xfb2d,\n \"shindothebrew\", 0x05c1,\n \"shinhebrew\", 0x05e9,\n \"shinshindot\", 0xfb2a,\n \"shinshindothebrew\", 0xfb2a,\n \"shinsindot\", 0xfb2b,\n \"shinsindothebrew\", 0xfb2b,\n \"shook\", 0x0282,\n \"sigma\", 0x03c3,\n \"sigma1\", 0x03c2,\n \"sigmafinal\", 0x03c2,\n \"sigmalunatesymbolgreek\", 0x03f2,\n \"sihiragana\", 0x3057,\n \"sikatakana\", 0x30b7,\n \"sikatakanahalfwidth\", 0xff7c,\n \"siluqhebrew\", 0x05bd,\n \"siluqlefthebrew\", 0x05bd,\n \"similar\", 0x223c,\n \"sindothebrew\", 0x05c2,\n \"siosacirclekorean\", 0x3274,\n \"siosaparenkorean\", 0x3214,\n \"sioscieuckorean\", 0x317e,\n \"sioscirclekorean\", 0x3266,\n \"sioskiyeokkorean\", 0x317a,\n \"sioskorean\", 0x3145,\n \"siosnieunkorean\", 0x317b,\n \"siosparenkorean\", 0x3206,\n \"siospieupkorean\", 0x317d,\n \"siostikeutkorean\", 0x317c,\n \"six\", 0x0036,\n \"sixarabic\", 0x0666,\n \"sixbengali\", 0x09ec,\n \"sixcircle\", 0x2465,\n \"sixcircleinversesansserif\", 0x278f,\n \"sixdeva\", 0x096c,\n \"sixgujarati\", 0x0aec,\n \"sixgurmukhi\", 0x0a6c,\n \"sixhackarabic\", 0x0666,\n \"sixhangzhou\", 0x3026,\n \"sixideographicparen\", 0x3225,\n \"sixinferior\", 0x2086,\n \"sixmonospace\", 0xff16,\n \"sixoldstyle\", 0xf736,\n \"sixparen\", 0x2479,\n \"sixperiod\", 0x248d,\n \"sixpersian\", 0x06f6,\n \"sixroman\", 0x2175,\n \"sixsuperior\", 0x2076,\n \"sixteencircle\", 0x246f,\n \"sixteencurrencydenominatorbengali\", 0x09f9,\n \"sixteenparen\", 0x2483,\n \"sixteenperiod\", 0x2497,\n \"sixthai\", 0x0e56,\n \"slash\", 0x002f,\n \"slashmonospace\", 0xff0f,\n \"slong\", 0x017f,\n \"slongdotaccent\", 0x1e9b,\n \"smileface\", 0x263a,\n \"smonospace\", 0xff53,\n \"sofpasuqhebrew\", 0x05c3,\n \"softhyphen\", 0x00ad,\n \"softsigncyrillic\", 0x044c,\n \"sohiragana\", 0x305d,\n \"sokatakana\", 0x30bd,\n \"sokatakanahalfwidth\", 0xff7f,\n \"soliduslongoverlaycmb\", 0x0338,\n \"solidusshortoverlaycmb\", 0x0337,\n \"sorusithai\", 0x0e29,\n \"sosalathai\", 0x0e28,\n \"sosothai\", 0x0e0b,\n \"sosuathai\", 0x0e2a,\n \"space\", 0x0020,\n \"spacehackarabic\", 0x0020,\n \"spade\", 0x2660,\n \"spadesuitblack\", 0x2660,\n \"spadesuitwhite\", 0x2664,\n \"sparen\", 0x24ae,\n \"squarebelowcmb\", 0x033b,\n \"squarecc\", 0x33c4,\n \"squarecm\", 0x339d,\n \"squarediagonalcrosshatchfill\", 0x25a9,\n \"squarehorizontalfill\", 0x25a4,\n \"squarekg\", 0x338f,\n \"squarekm\", 0x339e,\n \"squarekmcapital\", 0x33ce,\n \"squareln\", 0x33d1,\n \"squarelog\", 0x33d2,\n \"squaremg\", 0x338e,\n \"squaremil\", 0x33d5,\n \"squaremm\", 0x339c,\n \"squaremsquared\", 0x33a1,\n \"squareorthogonalcrosshatchfill\", 0x25a6,\n \"squareupperlefttolowerrightfill\", 0x25a7,\n \"squareupperrighttolowerleftfill\", 0x25a8,\n \"squareverticalfill\", 0x25a5,\n \"squarewhitewithsmallblack\", 0x25a3,\n \"srsquare\", 0x33db,\n \"ssabengali\", 0x09b7,\n \"ssadeva\", 0x0937,\n \"ssagujarati\", 0x0ab7,\n \"ssangcieuckorean\", 0x3149,\n \"ssanghieuhkorean\", 0x3185,\n \"ssangieungkorean\", 0x3180,\n \"ssangkiyeokkorean\", 0x3132,\n \"ssangnieunkorean\", 0x3165,\n \"ssangpieupkorean\", 0x3143,\n \"ssangsioskorean\", 0x3146,\n \"ssangtikeutkorean\", 0x3138,\n \"ssuperior\", 0xf6f2,\n \"sterling\", 0x00a3,\n \"sterlingmonospace\", 0xffe1,\n \"strokelongoverlaycmb\", 0x0336,\n \"strokeshortoverlaycmb\", 0x0335,\n \"subset\", 0x2282,\n \"subsetnotequal\", 0x228a,\n \"subsetorequal\", 0x2286,\n \"succeeds\", 0x227b,\n \"suchthat\", 0x220b,\n \"suhiragana\", 0x3059,\n \"sukatakana\", 0x30b9,\n \"sukatakanahalfwidth\", 0xff7d,\n \"sukunarabic\", 0x0652,\n \"summation\", 0x2211,\n \"sun\", 0x263c,\n \"superset\", 0x2283,\n \"supersetnotequal\", 0x228b,\n \"supersetorequal\", 0x2287,\n \"svsquare\", 0x33dc,\n \"syouwaerasquare\", 0x337c,\n \"t\", 0x0074,\n \"tabengali\", 0x09a4,\n \"tackdown\", 0x22a4,\n \"tackleft\", 0x22a3,\n \"tadeva\", 0x0924,\n \"tagujarati\", 0x0aa4,\n \"tagurmukhi\", 0x0a24,\n \"taharabic\", 0x0637,\n \"tahfinalarabic\", 0xfec2,\n \"tahinitialarabic\", 0xfec3,\n \"tahiragana\", 0x305f,\n \"tahmedialarabic\", 0xfec4,\n \"taisyouerasquare\", 0x337d,\n \"takatakana\", 0x30bf,\n \"takatakanahalfwidth\", 0xff80,\n \"tatweelarabic\", 0x0640,\n \"tau\", 0x03c4,\n \"tav\", 0x05ea,\n \"tavdages\", 0xfb4a,\n \"tavdagesh\", 0xfb4a,\n \"tavdageshhebrew\", 0xfb4a,\n \"tavhebrew\", 0x05ea,\n \"tbar\", 0x0167,\n \"tbopomofo\", 0x310a,\n \"tcaron\", 0x0165,\n \"tccurl\", 0x02a8,\n \"tcedilla\", 0x0163,\n \"tcheharabic\", 0x0686,\n \"tchehfinalarabic\", 0xfb7b,\n \"tchehinitialarabic\", 0xfb7c,\n \"tchehmedialarabic\", 0xfb7d,\n \"tcircle\", 0x24e3,\n \"tcircumflexbelow\", 0x1e71,\n \"tcommaaccent\", 0x0163,\n \"tdieresis\", 0x1e97,\n \"tdotaccent\", 0x1e6b,\n \"tdotbelow\", 0x1e6d,\n \"tecyrillic\", 0x0442,\n \"tedescendercyrillic\", 0x04ad,\n \"teharabic\", 0x062a,\n \"tehfinalarabic\", 0xfe96,\n \"tehhahinitialarabic\", 0xfca2,\n \"tehhahisolatedarabic\", 0xfc0c,\n \"tehinitialarabic\", 0xfe97,\n \"tehiragana\", 0x3066,\n \"tehjeeminitialarabic\", 0xfca1,\n \"tehjeemisolatedarabic\", 0xfc0b,\n \"tehmarbutaarabic\", 0x0629,\n \"tehmarbutafinalarabic\", 0xfe94,\n \"tehmedialarabic\", 0xfe98,\n \"tehmeeminitialarabic\", 0xfca4,\n \"tehmeemisolatedarabic\", 0xfc0e,\n \"tehnoonfinalarabic\", 0xfc73,\n \"tekatakana\", 0x30c6,\n \"tekatakanahalfwidth\", 0xff83,\n \"telephone\", 0x2121,\n \"telephoneblack\", 0x260e,\n \"telishagedolahebrew\", 0x05a0,\n \"telishaqetanahebrew\", 0x05a9,\n \"tencircle\", 0x2469,\n \"tenideographicparen\", 0x3229,\n \"tenparen\", 0x247d,\n \"tenperiod\", 0x2491,\n \"tenroman\", 0x2179,\n \"tesh\", 0x02a7,\n \"tet\", 0x05d8,\n \"tetdagesh\", 0xfb38,\n \"tetdageshhebrew\", 0xfb38,\n \"tethebrew\", 0x05d8,\n \"tetsecyrillic\", 0x04b5,\n \"tevirhebrew\", 0x059b,\n \"tevirlefthebrew\", 0x059b,\n \"thabengali\", 0x09a5,\n \"thadeva\", 0x0925,\n \"thagujarati\", 0x0aa5,\n \"thagurmukhi\", 0x0a25,\n \"thalarabic\", 0x0630,\n \"thalfinalarabic\", 0xfeac,\n \"thanthakhatlowleftthai\", 0xf898,\n \"thanthakhatlowrightthai\", 0xf897,\n \"thanthakhatthai\", 0x0e4c,\n \"thanthakhatupperleftthai\", 0xf896,\n \"theharabic\", 0x062b,\n \"thehfinalarabic\", 0xfe9a,\n \"thehinitialarabic\", 0xfe9b,\n \"thehmedialarabic\", 0xfe9c,\n \"thereexists\", 0x2203,\n \"therefore\", 0x2234,\n \"theta\", 0x03b8,\n \"theta1\", 0x03d1,\n \"thetasymbolgreek\", 0x03d1,\n \"thieuthacirclekorean\", 0x3279,\n \"thieuthaparenkorean\", 0x3219,\n \"thieuthcirclekorean\", 0x326b,\n \"thieuthkorean\", 0x314c,\n \"thieuthparenkorean\", 0x320b,\n \"thirteencircle\", 0x246c,\n \"thirteenparen\", 0x2480,\n \"thirteenperiod\", 0x2494,\n \"thonangmonthothai\", 0x0e11,\n \"thook\", 0x01ad,\n \"thophuthaothai\", 0x0e12,\n \"thorn\", 0x00fe,\n \"thothahanthai\", 0x0e17,\n \"thothanthai\", 0x0e10,\n \"thothongthai\", 0x0e18,\n \"thothungthai\", 0x0e16,\n \"thousandcyrillic\", 0x0482,\n \"thousandsseparatorarabic\", 0x066c,\n \"thousandsseparatorpersian\", 0x066c,\n \"three\", 0x0033,\n \"threearabic\", 0x0663,\n \"threebengali\", 0x09e9,\n \"threecircle\", 0x2462,\n \"threecircleinversesansserif\", 0x278c,\n \"threedeva\", 0x0969,\n \"threeeighths\", 0x215c,\n \"threegujarati\", 0x0ae9,\n \"threegurmukhi\", 0x0a69,\n \"threehackarabic\", 0x0663,\n \"threehangzhou\", 0x3023,\n \"threeideographicparen\", 0x3222,\n \"threeinferior\", 0x2083,\n \"threemonospace\", 0xff13,\n \"threenumeratorbengali\", 0x09f6,\n \"threeoldstyle\", 0xf733,\n \"threeparen\", 0x2476,\n \"threeperiod\", 0x248a,\n \"threepersian\", 0x06f3,\n \"threequarters\", 0x00be,\n \"threequartersemdash\", 0xf6de,\n \"threeroman\", 0x2172,\n \"threesuperior\", 0x00b3,\n \"threethai\", 0x0e53,\n \"thzsquare\", 0x3394,\n \"tihiragana\", 0x3061,\n \"tikatakana\", 0x30c1,\n \"tikatakanahalfwidth\", 0xff81,\n \"tikeutacirclekorean\", 0x3270,\n \"tikeutaparenkorean\", 0x3210,\n \"tikeutcirclekorean\", 0x3262,\n \"tikeutkorean\", 0x3137,\n \"tikeutparenkorean\", 0x3202,\n \"tilde\", 0x02dc,\n \"tildebelowcmb\", 0x0330,\n \"tildecmb\", 0x0303,\n \"tildecomb\", 0x0303,\n \"tildedoublecmb\", 0x0360,\n \"tildeoperator\", 0x223c,\n \"tildeoverlaycmb\", 0x0334,\n \"tildeverticalcmb\", 0x033e,\n \"timescircle\", 0x2297,\n \"tipehahebrew\", 0x0596,\n \"tipehalefthebrew\", 0x0596,\n \"tippigurmukhi\", 0x0a70,\n \"titlocyrilliccmb\", 0x0483,\n \"tiwnarmenian\", 0x057f,\n \"tlinebelow\", 0x1e6f,\n \"tmonospace\", 0xff54,\n \"toarmenian\", 0x0569,\n \"tohiragana\", 0x3068,\n \"tokatakana\", 0x30c8,\n \"tokatakanahalfwidth\", 0xff84,\n \"tonebarextrahighmod\", 0x02e5,\n \"tonebarextralowmod\", 0x02e9,\n \"tonebarhighmod\", 0x02e6,\n \"tonebarlowmod\", 0x02e8,\n \"tonebarmidmod\", 0x02e7,\n \"tonefive\", 0x01bd,\n \"tonesix\", 0x0185,\n \"tonetwo\", 0x01a8,\n \"tonos\", 0x0384,\n \"tonsquare\", 0x3327,\n \"topatakthai\", 0x0e0f,\n \"tortoiseshellbracketleft\", 0x3014,\n \"tortoiseshellbracketleftsmall\", 0xfe5d,\n \"tortoiseshellbracketleftvertical\", 0xfe39,\n \"tortoiseshellbracketright\", 0x3015,\n \"tortoiseshellbracketrightsmall\", 0xfe5e,\n \"tortoiseshellbracketrightvertical\", 0xfe3a,\n \"totaothai\", 0x0e15,\n \"tpalatalhook\", 0x01ab,\n \"tparen\", 0x24af,\n \"trademark\", 0x2122,\n \"trademarksans\", 0xf8ea,\n \"trademarkserif\", 0xf6db,\n \"tretroflexhook\", 0x0288,\n \"triagdn\", 0x25bc,\n \"triaglf\", 0x25c4,\n \"triagrt\", 0x25ba,\n \"triagup\", 0x25b2,\n \"ts\", 0x02a6,\n \"tsadi\", 0x05e6,\n \"tsadidagesh\", 0xfb46,\n \"tsadidageshhebrew\", 0xfb46,\n \"tsadihebrew\", 0x05e6,\n \"tsecyrillic\", 0x0446,\n \"tsere\", 0x05b5,\n \"tsere12\", 0x05b5,\n \"tsere1e\", 0x05b5,\n \"tsere2b\", 0x05b5,\n \"tserehebrew\", 0x05b5,\n \"tserenarrowhebrew\", 0x05b5,\n \"tserequarterhebrew\", 0x05b5,\n \"tserewidehebrew\", 0x05b5,\n \"tshecyrillic\", 0x045b,\n \"tsuperior\", 0xf6f3,\n \"ttabengali\", 0x099f,\n \"ttadeva\", 0x091f,\n \"ttagujarati\", 0x0a9f,\n \"ttagurmukhi\", 0x0a1f,\n \"tteharabic\", 0x0679,\n \"ttehfinalarabic\", 0xfb67,\n \"ttehinitialarabic\", 0xfb68,\n \"ttehmedialarabic\", 0xfb69,\n \"tthabengali\", 0x09a0,\n \"tthadeva\", 0x0920,\n \"tthagujarati\", 0x0aa0,\n \"tthagurmukhi\", 0x0a20,\n \"tturned\", 0x0287,\n \"tuhiragana\", 0x3064,\n \"tukatakana\", 0x30c4,\n \"tukatakanahalfwidth\", 0xff82,\n \"tusmallhiragana\", 0x3063,\n \"tusmallkatakana\", 0x30c3,\n \"tusmallkatakanahalfwidth\", 0xff6f,\n \"twelvecircle\", 0x246b,\n \"twelveparen\", 0x247f,\n \"twelveperiod\", 0x2493,\n \"twelveroman\", 0x217b,\n \"twentycircle\", 0x2473,\n \"twentyhangzhou\", 0x5344,\n \"twentyparen\", 0x2487,\n \"twentyperiod\", 0x249b,\n \"two\", 0x0032,\n \"twoarabic\", 0x0662,\n \"twobengali\", 0x09e8,\n \"twocircle\", 0x2461,\n \"twocircleinversesansserif\", 0x278b,\n \"twodeva\", 0x0968,\n \"twodotenleader\", 0x2025,\n \"twodotleader\", 0x2025,\n \"twodotleadervertical\", 0xfe30,\n \"twogujarati\", 0x0ae8,\n \"twogurmukhi\", 0x0a68,\n \"twohackarabic\", 0x0662,\n \"twohangzhou\", 0x3022,\n \"twoideographicparen\", 0x3221,\n \"twoinferior\", 0x2082,\n \"twomonospace\", 0xff12,\n \"twonumeratorbengali\", 0x09f5,\n \"twooldstyle\", 0xf732,\n \"twoparen\", 0x2475,\n \"twoperiod\", 0x2489,\n \"twopersian\", 0x06f2,\n \"tworoman\", 0x2171,\n \"twostroke\", 0x01bb,\n \"twosuperior\", 0x00b2,\n \"twothai\", 0x0e52,\n \"twothirds\", 0x2154,\n \"u\", 0x0075,\n \"uacute\", 0x00fa,\n \"ubar\", 0x0289,\n \"ubengali\", 0x0989,\n \"ubopomofo\", 0x3128,\n \"ubreve\", 0x016d,\n \"ucaron\", 0x01d4,\n \"ucircle\", 0x24e4,\n \"ucircumflex\", 0x00fb,\n \"ucircumflexbelow\", 0x1e77,\n \"ucyrillic\", 0x0443,\n \"udattadeva\", 0x0951,\n \"udblacute\", 0x0171,\n \"udblgrave\", 0x0215,\n \"udeva\", 0x0909,\n \"udieresis\", 0x00fc,\n \"udieresisacute\", 0x01d8,\n \"udieresisbelow\", 0x1e73,\n \"udieresiscaron\", 0x01da,\n \"udieresiscyrillic\", 0x04f1,\n \"udieresisgrave\", 0x01dc,\n \"udieresismacron\", 0x01d6,\n \"udotbelow\", 0x1ee5,\n \"ugrave\", 0x00f9,\n \"ugujarati\", 0x0a89,\n \"ugurmukhi\", 0x0a09,\n \"uhiragana\", 0x3046,\n \"uhookabove\", 0x1ee7,\n \"uhorn\", 0x01b0,\n \"uhornacute\", 0x1ee9,\n \"uhorndotbelow\", 0x1ef1,\n \"uhorngrave\", 0x1eeb,\n \"uhornhookabove\", 0x1eed,\n \"uhorntilde\", 0x1eef,\n \"uhungarumlaut\", 0x0171,\n \"uhungarumlautcyrillic\", 0x04f3,\n \"uinvertedbreve\", 0x0217,\n \"ukatakana\", 0x30a6,\n \"ukatakanahalfwidth\", 0xff73,\n \"ukcyrillic\", 0x0479,\n \"ukorean\", 0x315c,\n \"umacron\", 0x016b,\n \"umacroncyrillic\", 0x04ef,\n \"umacrondieresis\", 0x1e7b,\n \"umatragurmukhi\", 0x0a41,\n \"umonospace\", 0xff55,\n \"underscore\", 0x005f,\n \"underscoredbl\", 0x2017,\n \"underscoremonospace\", 0xff3f,\n \"underscorevertical\", 0xfe33,\n \"underscorewavy\", 0xfe4f,\n \"union\", 0x222a,\n \"universal\", 0x2200,\n \"uogonek\", 0x0173,\n \"uparen\", 0x24b0,\n \"upblock\", 0x2580,\n \"upperdothebrew\", 0x05c4,\n \"upsilon\", 0x03c5,\n \"upsilondieresis\", 0x03cb,\n \"upsilondieresistonos\", 0x03b0,\n \"upsilonlatin\", 0x028a,\n \"upsilontonos\", 0x03cd,\n \"uptackbelowcmb\", 0x031d,\n \"uptackmod\", 0x02d4,\n \"uragurmukhi\", 0x0a73,\n \"uring\", 0x016f,\n \"ushortcyrillic\", 0x045e,\n \"usmallhiragana\", 0x3045,\n \"usmallkatakana\", 0x30a5,\n \"usmallkatakanahalfwidth\", 0xff69,\n \"ustraightcyrillic\", 0x04af,\n \"ustraightstrokecyrillic\", 0x04b1,\n \"utilde\", 0x0169,\n \"utildeacute\", 0x1e79,\n \"utildebelow\", 0x1e75,\n \"uubengali\", 0x098a,\n \"uudeva\", 0x090a,\n \"uugujarati\", 0x0a8a,\n \"uugurmukhi\", 0x0a0a,\n \"uumatragurmukhi\", 0x0a42,\n \"uuvowelsignbengali\", 0x09c2,\n \"uuvowelsigndeva\", 0x0942,\n \"uuvowelsigngujarati\", 0x0ac2,\n \"uvowelsignbengali\", 0x09c1,\n \"uvowelsigndeva\", 0x0941,\n \"uvowelsigngujarati\", 0x0ac1,\n \"v\", 0x0076,\n \"vadeva\", 0x0935,\n \"vagujarati\", 0x0ab5,\n \"vagurmukhi\", 0x0a35,\n \"vakatakana\", 0x30f7,\n \"vav\", 0x05d5,\n \"vavdagesh\", 0xfb35,\n \"vavdagesh65\", 0xfb35,\n \"vavdageshhebrew\", 0xfb35,\n \"vavhebrew\", 0x05d5,\n \"vavholam\", 0xfb4b,\n \"vavholamhebrew\", 0xfb4b,\n \"vavvavhebrew\", 0x05f0,\n \"vavyodhebrew\", 0x05f1,\n \"vcircle\", 0x24e5,\n \"vdotbelow\", 0x1e7f,\n \"vecyrillic\", 0x0432,\n \"veharabic\", 0x06a4,\n \"vehfinalarabic\", 0xfb6b,\n \"vehinitialarabic\", 0xfb6c,\n \"vehmedialarabic\", 0xfb6d,\n \"vekatakana\", 0x30f9,\n \"venus\", 0x2640,\n \"verticalbar\", 0x007c,\n \"verticallineabovecmb\", 0x030d,\n \"verticallinebelowcmb\", 0x0329,\n \"verticallinelowmod\", 0x02cc,\n \"verticallinemod\", 0x02c8,\n \"vewarmenian\", 0x057e,\n \"vhook\", 0x028b,\n \"vikatakana\", 0x30f8,\n \"viramabengali\", 0x09cd,\n \"viramadeva\", 0x094d,\n \"viramagujarati\", 0x0acd,\n \"visargabengali\", 0x0983,\n \"visargadeva\", 0x0903,\n \"visargagujarati\", 0x0a83,\n \"vmonospace\", 0xff56,\n \"voarmenian\", 0x0578,\n \"voicediterationhiragana\", 0x309e,\n \"voicediterationkatakana\", 0x30fe,\n \"voicedmarkkana\", 0x309b,\n \"voicedmarkkanahalfwidth\", 0xff9e,\n \"vokatakana\", 0x30fa,\n \"vparen\", 0x24b1,\n \"vtilde\", 0x1e7d,\n \"vturned\", 0x028c,\n \"vuhiragana\", 0x3094,\n \"vukatakana\", 0x30f4,\n \"w\", 0x0077,\n \"wacute\", 0x1e83,\n \"waekorean\", 0x3159,\n \"wahiragana\", 0x308f,\n \"wakatakana\", 0x30ef,\n \"wakatakanahalfwidth\", 0xff9c,\n \"wakorean\", 0x3158,\n \"wasmallhiragana\", 0x308e,\n \"wasmallkatakana\", 0x30ee,\n \"wattosquare\", 0x3357,\n \"wavedash\", 0x301c,\n \"wavyunderscorevertical\", 0xfe34,\n \"wawarabic\", 0x0648,\n \"wawfinalarabic\", 0xfeee,\n \"wawhamzaabovearabic\", 0x0624,\n \"wawhamzaabovefinalarabic\", 0xfe86,\n \"wbsquare\", 0x33dd,\n \"wcircle\", 0x24e6,\n \"wcircumflex\", 0x0175,\n \"wdieresis\", 0x1e85,\n \"wdotaccent\", 0x1e87,\n \"wdotbelow\", 0x1e89,\n \"wehiragana\", 0x3091,\n \"weierstrass\", 0x2118,\n \"wekatakana\", 0x30f1,\n \"wekorean\", 0x315e,\n \"weokorean\", 0x315d,\n \"wgrave\", 0x1e81,\n \"whitebullet\", 0x25e6,\n \"whitecircle\", 0x25cb,\n \"whitecircleinverse\", 0x25d9,\n \"whitecornerbracketleft\", 0x300e,\n \"whitecornerbracketleftvertical\", 0xfe43,\n \"whitecornerbracketright\", 0x300f,\n \"whitecornerbracketrightvertical\", 0xfe44,\n \"whitediamond\", 0x25c7,\n \"whitediamondcontainingblacksmalldiamond\", 0x25c8,\n \"whitedownpointingsmalltriangle\", 0x25bf,\n \"whitedownpointingtriangle\", 0x25bd,\n \"whiteleftpointingsmalltriangle\", 0x25c3,\n \"whiteleftpointingtriangle\", 0x25c1,\n \"whitelenticularbracketleft\", 0x3016,\n \"whitelenticularbracketright\", 0x3017,\n \"whiterightpointingsmalltriangle\", 0x25b9,\n \"whiterightpointingtriangle\", 0x25b7,\n \"whitesmallsquare\", 0x25ab,\n \"whitesmilingface\", 0x263a,\n \"whitesquare\", 0x25a1,\n \"whitestar\", 0x2606,\n \"whitetelephone\", 0x260f,\n \"whitetortoiseshellbracketleft\", 0x3018,\n \"whitetortoiseshellbracketright\", 0x3019,\n \"whiteuppointingsmalltriangle\", 0x25b5,\n \"whiteuppointingtriangle\", 0x25b3,\n \"wihiragana\", 0x3090,\n \"wikatakana\", 0x30f0,\n \"wikorean\", 0x315f,\n \"wmonospace\", 0xff57,\n \"wohiragana\", 0x3092,\n \"wokatakana\", 0x30f2,\n \"wokatakanahalfwidth\", 0xff66,\n \"won\", 0x20a9,\n \"wonmonospace\", 0xffe6,\n \"wowaenthai\", 0x0e27,\n \"wparen\", 0x24b2,\n \"wring\", 0x1e98,\n \"wsuperior\", 0x02b7,\n \"wturned\", 0x028d,\n \"wynn\", 0x01bf,\n \"x\", 0x0078,\n \"xabovecmb\", 0x033d,\n \"xbopomofo\", 0x3112,\n \"xcircle\", 0x24e7,\n \"xdieresis\", 0x1e8d,\n \"xdotaccent\", 0x1e8b,\n \"xeharmenian\", 0x056d,\n \"xi\", 0x03be,\n \"xmonospace\", 0xff58,\n \"xparen\", 0x24b3,\n \"xsuperior\", 0x02e3,\n \"y\", 0x0079,\n \"yaadosquare\", 0x334e,\n \"yabengali\", 0x09af,\n \"yacute\", 0x00fd,\n \"yadeva\", 0x092f,\n \"yaekorean\", 0x3152,\n \"yagujarati\", 0x0aaf,\n \"yagurmukhi\", 0x0a2f,\n \"yahiragana\", 0x3084,\n \"yakatakana\", 0x30e4,\n \"yakatakanahalfwidth\", 0xff94,\n \"yakorean\", 0x3151,\n \"yamakkanthai\", 0x0e4e,\n \"yasmallhiragana\", 0x3083,\n \"yasmallkatakana\", 0x30e3,\n \"yasmallkatakanahalfwidth\", 0xff6c,\n \"yatcyrillic\", 0x0463,\n \"ycircle\", 0x24e8,\n \"ycircumflex\", 0x0177,\n \"ydieresis\", 0x00ff,\n \"ydotaccent\", 0x1e8f,\n \"ydotbelow\", 0x1ef5,\n \"yeharabic\", 0x064a,\n \"yehbarreearabic\", 0x06d2,\n \"yehbarreefinalarabic\", 0xfbaf,\n \"yehfinalarabic\", 0xfef2,\n \"yehhamzaabovearabic\", 0x0626,\n \"yehhamzaabovefinalarabic\", 0xfe8a,\n \"yehhamzaaboveinitialarabic\", 0xfe8b,\n \"yehhamzaabovemedialarabic\", 0xfe8c,\n \"yehinitialarabic\", 0xfef3,\n \"yehmedialarabic\", 0xfef4,\n \"yehmeeminitialarabic\", 0xfcdd,\n \"yehmeemisolatedarabic\", 0xfc58,\n \"yehnoonfinalarabic\", 0xfc94,\n \"yehthreedotsbelowarabic\", 0x06d1,\n \"yekorean\", 0x3156,\n \"yen\", 0x00a5,\n \"yenmonospace\", 0xffe5,\n \"yeokorean\", 0x3155,\n \"yeorinhieuhkorean\", 0x3186,\n \"yerahbenyomohebrew\", 0x05aa,\n \"yerahbenyomolefthebrew\", 0x05aa,\n \"yericyrillic\", 0x044b,\n \"yerudieresiscyrillic\", 0x04f9,\n \"yesieungkorean\", 0x3181,\n \"yesieungpansioskorean\", 0x3183,\n \"yesieungsioskorean\", 0x3182,\n \"yetivhebrew\", 0x059a,\n \"ygrave\", 0x1ef3,\n \"yhook\", 0x01b4,\n \"yhookabove\", 0x1ef7,\n \"yiarmenian\", 0x0575,\n \"yicyrillic\", 0x0457,\n \"yikorean\", 0x3162,\n \"yinyang\", 0x262f,\n \"yiwnarmenian\", 0x0582,\n \"ymonospace\", 0xff59,\n \"yod\", 0x05d9,\n \"yoddagesh\", 0xfb39,\n \"yoddageshhebrew\", 0xfb39,\n \"yodhebrew\", 0x05d9,\n \"yodyodhebrew\", 0x05f2,\n \"yodyodpatahhebrew\", 0xfb1f,\n \"yohiragana\", 0x3088,\n \"yoikorean\", 0x3189,\n \"yokatakana\", 0x30e8,\n \"yokatakanahalfwidth\", 0xff96,\n \"yokorean\", 0x315b,\n \"yosmallhiragana\", 0x3087,\n \"yosmallkatakana\", 0x30e7,\n \"yosmallkatakanahalfwidth\", 0xff6e,\n \"yotgreek\", 0x03f3,\n \"yoyaekorean\", 0x3188,\n \"yoyakorean\", 0x3187,\n \"yoyakthai\", 0x0e22,\n \"yoyingthai\", 0x0e0d,\n \"yparen\", 0x24b4,\n \"ypogegrammeni\", 0x037a,\n \"ypogegrammenigreekcmb\", 0x0345,\n \"yr\", 0x01a6,\n \"yring\", 0x1e99,\n \"ysuperior\", 0x02b8,\n \"ytilde\", 0x1ef9,\n \"yturned\", 0x028e,\n \"yuhiragana\", 0x3086,\n \"yuikorean\", 0x318c,\n \"yukatakana\", 0x30e6,\n \"yukatakanahalfwidth\", 0xff95,\n \"yukorean\", 0x3160,\n \"yusbigcyrillic\", 0x046b,\n \"yusbigiotifiedcyrillic\", 0x046d,\n \"yuslittlecyrillic\", 0x0467,\n \"yuslittleiotifiedcyrillic\", 0x0469,\n \"yusmallhiragana\", 0x3085,\n \"yusmallkatakana\", 0x30e5,\n \"yusmallkatakanahalfwidth\", 0xff6d,\n \"yuyekorean\", 0x318b,\n \"yuyeokorean\", 0x318a,\n \"yyabengali\", 0x09df,\n \"yyadeva\", 0x095f,\n \"z\", 0x007a,\n \"zaarmenian\", 0x0566,\n \"zacute\", 0x017a,\n \"zadeva\", 0x095b,\n \"zagurmukhi\", 0x0a5b,\n \"zaharabic\", 0x0638,\n \"zahfinalarabic\", 0xfec6,\n \"zahinitialarabic\", 0xfec7,\n \"zahiragana\", 0x3056,\n \"zahmedialarabic\", 0xfec8,\n \"zainarabic\", 0x0632,\n \"zainfinalarabic\", 0xfeb0,\n \"zakatakana\", 0x30b6,\n \"zaqefgadolhebrew\", 0x0595,\n \"zaqefqatanhebrew\", 0x0594,\n \"zarqahebrew\", 0x0598,\n \"zayin\", 0x05d6,\n \"zayindagesh\", 0xfb36,\n \"zayindageshhebrew\", 0xfb36,\n \"zayinhebrew\", 0x05d6,\n \"zbopomofo\", 0x3117,\n \"zcaron\", 0x017e,\n \"zcircle\", 0x24e9,\n \"zcircumflex\", 0x1e91,\n \"zcurl\", 0x0291,\n \"zdot\", 0x017c,\n \"zdotaccent\", 0x017c,\n \"zdotbelow\", 0x1e93,\n \"zecyrillic\", 0x0437,\n \"zedescendercyrillic\", 0x0499,\n \"zedieresiscyrillic\", 0x04df,\n \"zehiragana\", 0x305c,\n \"zekatakana\", 0x30bc,\n \"zero\", 0x0030,\n \"zeroarabic\", 0x0660,\n \"zerobengali\", 0x09e6,\n \"zerodeva\", 0x0966,\n \"zerogujarati\", 0x0ae6,\n \"zerogurmukhi\", 0x0a66,\n \"zerohackarabic\", 0x0660,\n \"zeroinferior\", 0x2080,\n \"zeromonospace\", 0xff10,\n \"zerooldstyle\", 0xf730,\n \"zeropersian\", 0x06f0,\n \"zerosuperior\", 0x2070,\n \"zerothai\", 0x0e50,\n \"zerowidthjoiner\", 0xfeff,\n \"zerowidthnonjoiner\", 0x200c,\n \"zerowidthspace\", 0x200b,\n \"zeta\", 0x03b6,\n \"zhbopomofo\", 0x3113,\n \"zhearmenian\", 0x056a,\n \"zhebrevecyrillic\", 0x04c2,\n \"zhecyrillic\", 0x0436,\n \"zhedescendercyrillic\", 0x0497,\n \"zhedieresiscyrillic\", 0x04dd,\n \"zihiragana\", 0x3058,\n \"zikatakana\", 0x30b8,\n \"zinorhebrew\", 0x05ae,\n \"zlinebelow\", 0x1e95,\n \"zmonospace\", 0xff5a,\n \"zohiragana\", 0x305e,\n \"zokatakana\", 0x30be,\n \"zparen\", 0x24b5,\n \"zretroflexhook\", 0x0290,\n \"zstroke\", 0x01b6,\n \"zuhiragana\", 0x305a,\n \"zukatakana\", 0x30ba,\n \".notdef\", 0x0000,\n\n // TeX-specific glyph names.\n \"angbracketleftbig\", 0x2329,\n \"angbracketleftBig\", 0x2329,\n \"angbracketleftbigg\", 0x2329,\n \"angbracketleftBigg\", 0x2329,\n \"angbracketrightBig\", 0x232a,\n \"angbracketrightbig\", 0x232a,\n \"angbracketrightBigg\", 0x232a,\n \"angbracketrightbigg\", 0x232a,\n \"arrowhookleft\", 0x21aa,\n \"arrowhookright\", 0x21a9,\n \"arrowlefttophalf\", 0x21bc,\n \"arrowleftbothalf\", 0x21bd,\n \"arrownortheast\", 0x2197,\n \"arrownorthwest\", 0x2196,\n \"arrowrighttophalf\", 0x21c0,\n \"arrowrightbothalf\", 0x21c1,\n \"arrowsoutheast\", 0x2198,\n \"arrowsouthwest\", 0x2199,\n \"backslashbig\", 0x2216,\n \"backslashBig\", 0x2216,\n \"backslashBigg\", 0x2216,\n \"backslashbigg\", 0x2216,\n \"bardbl\", 0x2016,\n \"bracehtipdownleft\", 0xfe37,\n \"bracehtipdownright\", 0xfe37,\n \"bracehtipupleft\", 0xfe38,\n \"bracehtipupright\", 0xfe38,\n \"braceleftBig\", 0x007b,\n \"braceleftbig\", 0x007b,\n \"braceleftbigg\", 0x007b,\n \"braceleftBigg\", 0x007b,\n \"bracerightBig\", 0x007d,\n \"bracerightbig\", 0x007d,\n \"bracerightbigg\", 0x007d,\n \"bracerightBigg\", 0x007d,\n \"bracketleftbig\", 0x005b,\n \"bracketleftBig\", 0x005b,\n \"bracketleftbigg\", 0x005b,\n \"bracketleftBigg\", 0x005b,\n \"bracketrightBig\", 0x005d,\n \"bracketrightbig\", 0x005d,\n \"bracketrightbigg\", 0x005d,\n \"bracketrightBigg\", 0x005d,\n \"ceilingleftbig\", 0x2308,\n \"ceilingleftBig\", 0x2308,\n \"ceilingleftBigg\", 0x2308,\n \"ceilingleftbigg\", 0x2308,\n \"ceilingrightbig\", 0x2309,\n \"ceilingrightBig\", 0x2309,\n \"ceilingrightbigg\", 0x2309,\n \"ceilingrightBigg\", 0x2309,\n \"circledotdisplay\", 0x2299,\n \"circledottext\", 0x2299,\n \"circlemultiplydisplay\", 0x2297,\n \"circlemultiplytext\", 0x2297,\n \"circleplusdisplay\", 0x2295,\n \"circleplustext\", 0x2295,\n \"contintegraldisplay\", 0x222e,\n \"contintegraltext\", 0x222e,\n \"coproductdisplay\", 0x2210,\n \"coproducttext\", 0x2210,\n \"floorleftBig\", 0x230a,\n \"floorleftbig\", 0x230a,\n \"floorleftbigg\", 0x230a,\n \"floorleftBigg\", 0x230a,\n \"floorrightbig\", 0x230b,\n \"floorrightBig\", 0x230b,\n \"floorrightBigg\", 0x230b,\n \"floorrightbigg\", 0x230b,\n \"hatwide\", 0x0302,\n \"hatwider\", 0x0302,\n \"hatwidest\", 0x0302,\n \"intercal\", 0x1d40,\n \"integraldisplay\", 0x222b,\n \"integraltext\", 0x222b,\n \"intersectiondisplay\", 0x22c2,\n \"intersectiontext\", 0x22c2,\n \"logicalanddisplay\", 0x2227,\n \"logicalandtext\", 0x2227,\n \"logicalordisplay\", 0x2228,\n \"logicalortext\", 0x2228,\n \"parenleftBig\", 0x0028,\n \"parenleftbig\", 0x0028,\n \"parenleftBigg\", 0x0028,\n \"parenleftbigg\", 0x0028,\n \"parenrightBig\", 0x0029,\n \"parenrightbig\", 0x0029,\n \"parenrightBigg\", 0x0029,\n \"parenrightbigg\", 0x0029,\n \"prime\", 0x2032,\n \"productdisplay\", 0x220f,\n \"producttext\", 0x220f,\n \"radicalbig\", 0x221a,\n \"radicalBig\", 0x221a,\n \"radicalBigg\", 0x221a,\n \"radicalbigg\", 0x221a,\n \"radicalbt\", 0x221a,\n \"radicaltp\", 0x221a,\n \"radicalvertex\", 0x221a,\n \"slashbig\", 0x002f,\n \"slashBig\", 0x002f,\n \"slashBigg\", 0x002f,\n \"slashbigg\", 0x002f,\n \"summationdisplay\", 0x2211,\n \"summationtext\", 0x2211,\n \"tildewide\", 0x02dc,\n \"tildewider\", 0x02dc,\n \"tildewidest\", 0x02dc,\n \"uniondisplay\", 0x22c3,\n \"unionmultidisplay\", 0x228e,\n \"unionmultitext\", 0x228e,\n \"unionsqdisplay\", 0x2294,\n \"unionsqtext\", 0x2294,\n \"uniontext\", 0x22c3,\n \"vextenddouble\", 0x2225,\n \"vextendsingle\", 0x2223,\n ];\n});\n\nconst getDingbatsGlyphsUnicode = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"space\", 0x0020,\n \"a1\", 0x2701,\n \"a2\", 0x2702,\n \"a202\", 0x2703,\n \"a3\", 0x2704,\n \"a4\", 0x260e,\n \"a5\", 0x2706,\n \"a119\", 0x2707,\n \"a118\", 0x2708,\n \"a117\", 0x2709,\n \"a11\", 0x261b,\n \"a12\", 0x261e,\n \"a13\", 0x270c,\n \"a14\", 0x270d,\n \"a15\", 0x270e,\n \"a16\", 0x270f,\n \"a105\", 0x2710,\n \"a17\", 0x2711,\n \"a18\", 0x2712,\n \"a19\", 0x2713,\n \"a20\", 0x2714,\n \"a21\", 0x2715,\n \"a22\", 0x2716,\n \"a23\", 0x2717,\n \"a24\", 0x2718,\n \"a25\", 0x2719,\n \"a26\", 0x271a,\n \"a27\", 0x271b,\n \"a28\", 0x271c,\n \"a6\", 0x271d,\n \"a7\", 0x271e,\n \"a8\", 0x271f,\n \"a9\", 0x2720,\n \"a10\", 0x2721,\n \"a29\", 0x2722,\n \"a30\", 0x2723,\n \"a31\", 0x2724,\n \"a32\", 0x2725,\n \"a33\", 0x2726,\n \"a34\", 0x2727,\n \"a35\", 0x2605,\n \"a36\", 0x2729,\n \"a37\", 0x272a,\n \"a38\", 0x272b,\n \"a39\", 0x272c,\n \"a40\", 0x272d,\n \"a41\", 0x272e,\n \"a42\", 0x272f,\n \"a43\", 0x2730,\n \"a44\", 0x2731,\n \"a45\", 0x2732,\n \"a46\", 0x2733,\n \"a47\", 0x2734,\n \"a48\", 0x2735,\n \"a49\", 0x2736,\n \"a50\", 0x2737,\n \"a51\", 0x2738,\n \"a52\", 0x2739,\n \"a53\", 0x273a,\n \"a54\", 0x273b,\n \"a55\", 0x273c,\n \"a56\", 0x273d,\n \"a57\", 0x273e,\n \"a58\", 0x273f,\n \"a59\", 0x2740,\n \"a60\", 0x2741,\n \"a61\", 0x2742,\n \"a62\", 0x2743,\n \"a63\", 0x2744,\n \"a64\", 0x2745,\n \"a65\", 0x2746,\n \"a66\", 0x2747,\n \"a67\", 0x2748,\n \"a68\", 0x2749,\n \"a69\", 0x274a,\n \"a70\", 0x274b,\n \"a71\", 0x25cf,\n \"a72\", 0x274d,\n \"a73\", 0x25a0,\n \"a74\", 0x274f,\n \"a203\", 0x2750,\n \"a75\", 0x2751,\n \"a204\", 0x2752,\n \"a76\", 0x25b2,\n \"a77\", 0x25bc,\n \"a78\", 0x25c6,\n \"a79\", 0x2756,\n \"a81\", 0x25d7,\n \"a82\", 0x2758,\n \"a83\", 0x2759,\n \"a84\", 0x275a,\n \"a97\", 0x275b,\n \"a98\", 0x275c,\n \"a99\", 0x275d,\n \"a100\", 0x275e,\n \"a101\", 0x2761,\n \"a102\", 0x2762,\n \"a103\", 0x2763,\n \"a104\", 0x2764,\n \"a106\", 0x2765,\n \"a107\", 0x2766,\n \"a108\", 0x2767,\n \"a112\", 0x2663,\n \"a111\", 0x2666,\n \"a110\", 0x2665,\n \"a109\", 0x2660,\n \"a120\", 0x2460,\n \"a121\", 0x2461,\n \"a122\", 0x2462,\n \"a123\", 0x2463,\n \"a124\", 0x2464,\n \"a125\", 0x2465,\n \"a126\", 0x2466,\n \"a127\", 0x2467,\n \"a128\", 0x2468,\n \"a129\", 0x2469,\n \"a130\", 0x2776,\n \"a131\", 0x2777,\n \"a132\", 0x2778,\n \"a133\", 0x2779,\n \"a134\", 0x277a,\n \"a135\", 0x277b,\n \"a136\", 0x277c,\n \"a137\", 0x277d,\n \"a138\", 0x277e,\n \"a139\", 0x277f,\n \"a140\", 0x2780,\n \"a141\", 0x2781,\n \"a142\", 0x2782,\n \"a143\", 0x2783,\n \"a144\", 0x2784,\n \"a145\", 0x2785,\n \"a146\", 0x2786,\n \"a147\", 0x2787,\n \"a148\", 0x2788,\n \"a149\", 0x2789,\n \"a150\", 0x278a,\n \"a151\", 0x278b,\n \"a152\", 0x278c,\n \"a153\", 0x278d,\n \"a154\", 0x278e,\n \"a155\", 0x278f,\n \"a156\", 0x2790,\n \"a157\", 0x2791,\n \"a158\", 0x2792,\n \"a159\", 0x2793,\n \"a160\", 0x2794,\n \"a161\", 0x2192,\n \"a163\", 0x2194,\n \"a164\", 0x2195,\n \"a196\", 0x2798,\n \"a165\", 0x2799,\n \"a192\", 0x279a,\n \"a166\", 0x279b,\n \"a167\", 0x279c,\n \"a168\", 0x279d,\n \"a169\", 0x279e,\n \"a170\", 0x279f,\n \"a171\", 0x27a0,\n \"a172\", 0x27a1,\n \"a173\", 0x27a2,\n \"a162\", 0x27a3,\n \"a174\", 0x27a4,\n \"a175\", 0x27a5,\n \"a176\", 0x27a6,\n \"a177\", 0x27a7,\n \"a178\", 0x27a8,\n \"a179\", 0x27a9,\n \"a193\", 0x27aa,\n \"a180\", 0x27ab,\n \"a199\", 0x27ac,\n \"a181\", 0x27ad,\n \"a200\", 0x27ae,\n \"a182\", 0x27af,\n \"a201\", 0x27b1,\n \"a183\", 0x27b2,\n \"a184\", 0x27b3,\n \"a197\", 0x27b4,\n \"a185\", 0x27b5,\n \"a194\", 0x27b6,\n \"a198\", 0x27b7,\n \"a186\", 0x27b8,\n \"a195\", 0x27b9,\n \"a187\", 0x27ba,\n \"a188\", 0x27bb,\n \"a189\", 0x27bc,\n \"a190\", 0x27bd,\n \"a191\", 0x27be,\n \"a89\", 0x2768, // 0xF8D7\n \"a90\", 0x2769, // 0xF8D8\n \"a93\", 0x276a, // 0xF8D9\n \"a94\", 0x276b, // 0xF8DA\n \"a91\", 0x276c, // 0xF8DB\n \"a92\", 0x276d, // 0xF8DC\n \"a205\", 0x276e, // 0xF8DD\n \"a85\", 0x276f, // 0xF8DE\n \"a206\", 0x2770, // 0xF8DF\n \"a86\", 0x2771, // 0xF8E0\n \"a87\", 0x2772, // 0xF8E1\n \"a88\", 0x2773, // 0xF8E2\n \"a95\", 0x2774, // 0xF8E3\n \"a96\", 0x2775, // 0xF8E4\n \".notdef\", 0x0000,\n ];\n});\n\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nimport {\n getArrayLookupTableFactory,\n getLookupTableFactory,\n} from \"./core_utils.js\";\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00a9; // copyrightsans (0xF8E9) => copyright\n t[63193] = 0x00a9; // copyrightserif (0xF6D9) => copyright\n t[63720] = 0x00ae; // registersans (0xF8E8) => registered\n t[63194] = 0x00ae; // registerserif (0xF6DA) => registered\n t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n t[63729] = 0x23a7; // bracelefttp (0xF8F1)\n t[63730] = 0x23a8; // braceleftmid (0xF8F2)\n t[63731] = 0x23a9; // braceleftbt (0xF8F3)\n t[63740] = 0x23ab; // bracerighttp (0xF8FC)\n t[63741] = 0x23ac; // bracerightmid (0xF8FD)\n t[63742] = 0x23ad; // bracerightbt (0xF8FE)\n t[63726] = 0x23a1; // bracketlefttp (0xF8EE)\n t[63727] = 0x23a2; // bracketleftex (0xF8EF)\n t[63728] = 0x23a3; // bracketleftbt (0xF8F0)\n t[63737] = 0x23a4; // bracketrighttp (0xF8F9)\n t[63738] = 0x23a5; // bracketrightex (0xF8FA)\n t[63739] = 0x23a6; // bracketrightbt (0xF8FB)\n t[63723] = 0x239b; // parenlefttp (0xF8EB)\n t[63724] = 0x239c; // parenleftex (0xF8EC)\n t[63725] = 0x239d; // parenleftbt (0xF8ED)\n t[63734] = 0x239e; // parenrighttp (0xF8F6)\n t[63735] = 0x239f; // parenrightex (0xF8F7)\n t[63736] = 0x23a0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n // Specials unicode block.\n return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n return getSpecialPUASymbols()[code] || code;\n } else if (code === /* softhyphen = */ 0x00ad) {\n return 0x002d; // hyphen\n }\n return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n if (name[0] === \"u\") {\n const nameLen = name.length;\n let hexStr;\n\n if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n // 'uniXXXX'\n hexStr = name.substring(3);\n } else if (nameLen >= 5 && nameLen <= 7) {\n // 'uXXXX{XX}'\n hexStr = name.substring(1);\n } else {\n return -1;\n }\n // Check for upper-case hexadecimal characters, to avoid false positives.\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\n\nconst UnicodeRanges = [\n { begin: 0x0000, end: 0x007f }, // Basic Latin\n { begin: 0x0080, end: 0x00ff }, // Latin-1 Supplement\n { begin: 0x0100, end: 0x017f }, // Latin Extended-A\n { begin: 0x0180, end: 0x024f }, // Latin Extended-B\n { begin: 0x0250, end: 0x02af }, // IPA Extensions\n { begin: 0x02b0, end: 0x02ff }, // Spacing Modifier Letters\n { begin: 0x0300, end: 0x036f }, // Combining Diacritical Marks\n { begin: 0x0370, end: 0x03ff }, // Greek and Coptic\n { begin: 0x2c80, end: 0x2cff }, // Coptic\n { begin: 0x0400, end: 0x04ff }, // Cyrillic\n { begin: 0x0530, end: 0x058f }, // Armenian\n { begin: 0x0590, end: 0x05ff }, // Hebrew\n { begin: 0xa500, end: 0xa63f }, // Vai\n { begin: 0x0600, end: 0x06ff }, // Arabic\n { begin: 0x07c0, end: 0x07ff }, // NKo\n { begin: 0x0900, end: 0x097f }, // Devanagari\n { begin: 0x0980, end: 0x09ff }, // Bengali\n { begin: 0x0a00, end: 0x0a7f }, // Gurmukhi\n { begin: 0x0a80, end: 0x0aff }, // Gujarati\n { begin: 0x0b00, end: 0x0b7f }, // Oriya\n { begin: 0x0b80, end: 0x0bff }, // Tamil\n { begin: 0x0c00, end: 0x0c7f }, // Telugu\n { begin: 0x0c80, end: 0x0cff }, // Kannada\n { begin: 0x0d00, end: 0x0d7f }, // Malayalam\n { begin: 0x0e00, end: 0x0e7f }, // Thai\n { begin: 0x0e80, end: 0x0eff }, // Lao\n { begin: 0x10a0, end: 0x10ff }, // Georgian\n { begin: 0x1b00, end: 0x1b7f }, // Balinese\n { begin: 0x1100, end: 0x11ff }, // Hangul Jamo\n { begin: 0x1e00, end: 0x1eff }, // Latin Extended Additional\n { begin: 0x1f00, end: 0x1fff }, // Greek Extended\n { begin: 0x2000, end: 0x206f }, // General Punctuation\n { begin: 0x2070, end: 0x209f }, // Superscripts And Subscripts\n { begin: 0x20a0, end: 0x20cf }, // Currency Symbol\n { begin: 0x20d0, end: 0x20ff }, // Combining Diacritical Marks\n { begin: 0x2100, end: 0x214f }, // Letterlike Symbols\n { begin: 0x2150, end: 0x218f }, // Number Forms\n { begin: 0x2190, end: 0x21ff }, // Arrows\n { begin: 0x2200, end: 0x22ff }, // Mathematical Operators\n { begin: 0x2300, end: 0x23ff }, // Miscellaneous Technical\n { begin: 0x2400, end: 0x243f }, // Control Pictures\n { begin: 0x2440, end: 0x245f }, // Optical Character Recognition\n { begin: 0x2460, end: 0x24ff }, // Enclosed Alphanumerics\n { begin: 0x2500, end: 0x257f }, // Box Drawing\n { begin: 0x2580, end: 0x259f }, // Block Elements\n { begin: 0x25a0, end: 0x25ff }, // Geometric Shapes\n { begin: 0x2600, end: 0x26ff }, // Miscellaneous Symbols\n { begin: 0x2700, end: 0x27bf }, // Dingbats\n { begin: 0x3000, end: 0x303f }, // CJK Symbols And Punctuation\n { begin: 0x3040, end: 0x309f }, // Hiragana\n { begin: 0x30a0, end: 0x30ff }, // Katakana\n { begin: 0x3100, end: 0x312f }, // Bopomofo\n { begin: 0x3130, end: 0x318f }, // Hangul Compatibility Jamo\n { begin: 0xa840, end: 0xa87f }, // Phags-pa\n { begin: 0x3200, end: 0x32ff }, // Enclosed CJK Letters And Months\n { begin: 0x3300, end: 0x33ff }, // CJK Compatibility\n { begin: 0xac00, end: 0xd7af }, // Hangul Syllables\n { begin: 0xd800, end: 0xdfff }, // Non-Plane 0 *\n { begin: 0x10900, end: 0x1091f }, // Phoenicia\n { begin: 0x4e00, end: 0x9fff }, // CJK Unified Ideographs\n { begin: 0xe000, end: 0xf8ff }, // Private Use Area (plane 0)\n { begin: 0x31c0, end: 0x31ef }, // CJK Strokes\n { begin: 0xfb00, end: 0xfb4f }, // Alphabetic Presentation Forms\n { begin: 0xfb50, end: 0xfdff }, // Arabic Presentation Forms-A\n { begin: 0xfe20, end: 0xfe2f }, // Combining Half Marks\n { begin: 0xfe10, end: 0xfe1f }, // Vertical Forms\n { begin: 0xfe50, end: 0xfe6f }, // Small Form Variants\n { begin: 0xfe70, end: 0xfeff }, // Arabic Presentation Forms-B\n { begin: 0xff00, end: 0xffef }, // Halfwidth And Fullwidth Forms\n { begin: 0xfff0, end: 0xffff }, // Specials\n { begin: 0x0f00, end: 0x0fff }, // Tibetan\n { begin: 0x0700, end: 0x074f }, // Syriac\n { begin: 0x0780, end: 0x07bf }, // Thaana\n { begin: 0x0d80, end: 0x0dff }, // Sinhala\n { begin: 0x1000, end: 0x109f }, // Myanmar\n { begin: 0x1200, end: 0x137f }, // Ethiopic\n { begin: 0x13a0, end: 0x13ff }, // Cherokee\n { begin: 0x1400, end: 0x167f }, // Unified Canadian Aboriginal Syllabics\n { begin: 0x1680, end: 0x169f }, // Ogham\n { begin: 0x16a0, end: 0x16ff }, // Runic\n { begin: 0x1780, end: 0x17ff }, // Khmer\n { begin: 0x1800, end: 0x18af }, // Mongolian\n { begin: 0x2800, end: 0x28ff }, // Braille Patterns\n { begin: 0xa000, end: 0xa48f }, // Yi Syllables\n { begin: 0x1700, end: 0x171f }, // Tagalog\n { begin: 0x10300, end: 0x1032f }, // Old Italic\n { begin: 0x10330, end: 0x1034f }, // Gothic\n { begin: 0x10400, end: 0x1044f }, // Deseret\n { begin: 0x1d000, end: 0x1d0ff }, // Byzantine Musical Symbols\n { begin: 0x1d400, end: 0x1d7ff }, // Mathematical Alphanumeric Symbols\n { begin: 0xff000, end: 0xffffd }, // Private Use (plane 15)\n { begin: 0xfe00, end: 0xfe0f }, // Variation Selectors\n { begin: 0xe0000, end: 0xe007f }, // Tags\n { begin: 0x1900, end: 0x194f }, // Limbu\n { begin: 0x1950, end: 0x197f }, // Tai Le\n { begin: 0x1980, end: 0x19df }, // New Tai Lue\n { begin: 0x1a00, end: 0x1a1f }, // Buginese\n { begin: 0x2c00, end: 0x2c5f }, // Glagolitic\n { begin: 0x2d30, end: 0x2d7f }, // Tifinagh\n { begin: 0x4dc0, end: 0x4dff }, // Yijing Hexagram Symbols\n { begin: 0xa800, end: 0xa82f }, // Syloti Nagri\n { begin: 0x10000, end: 0x1007f }, // Linear B Syllabary\n { begin: 0x10140, end: 0x1018f }, // Ancient Greek Numbers\n { begin: 0x10380, end: 0x1039f }, // Ugaritic\n { begin: 0x103a0, end: 0x103df }, // Old Persian\n { begin: 0x10450, end: 0x1047f }, // Shavian\n { begin: 0x10480, end: 0x104af }, // Osmanya\n { begin: 0x10800, end: 0x1083f }, // Cypriot Syllabary\n { begin: 0x10a00, end: 0x10a5f }, // Kharoshthi\n { begin: 0x1d300, end: 0x1d35f }, // Tai Xuan Jing Symbols\n { begin: 0x12000, end: 0x123ff }, // Cuneiform\n { begin: 0x1d360, end: 0x1d37f }, // Counting Rod Numerals\n { begin: 0x1b80, end: 0x1bbf }, // Sundanese\n { begin: 0x1c00, end: 0x1c4f }, // Lepcha\n { begin: 0x1c50, end: 0x1c7f }, // Ol Chiki\n { begin: 0xa880, end: 0xa8df }, // Saurashtra\n { begin: 0xa900, end: 0xa92f }, // Kayah Li\n { begin: 0xa930, end: 0xa95f }, // Rejang\n { begin: 0xaa00, end: 0xaa5f }, // Cham\n { begin: 0x10190, end: 0x101cf }, // Ancient Symbols\n { begin: 0x101d0, end: 0x101ff }, // Phaistos Disc\n { begin: 0x102a0, end: 0x102df }, // Carian\n { begin: 0x1f030, end: 0x1f09f }, // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n const range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\n\nfunction isRTLRangeFor(value) {\n let range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nconst getNormalizedUnicodes = getArrayLookupTableFactory(function () {\n // prettier-ignore\n return [\n \"\\u00A8\", \"\\u0020\\u0308\",\n \"\\u00AF\", \"\\u0020\\u0304\",\n \"\\u00B4\", \"\\u0020\\u0301\",\n \"\\u00B5\", \"\\u03BC\",\n \"\\u00B8\", \"\\u0020\\u0327\",\n \"\\u0132\", \"\\u0049\\u004A\",\n \"\\u0133\", \"\\u0069\\u006A\",\n \"\\u013F\", \"\\u004C\\u00B7\",\n \"\\u0140\", \"\\u006C\\u00B7\",\n \"\\u0149\", \"\\u02BC\\u006E\",\n \"\\u017F\", \"\\u0073\",\n \"\\u01C4\", \"\\u0044\\u017D\",\n \"\\u01C5\", \"\\u0044\\u017E\",\n \"\\u01C6\", \"\\u0064\\u017E\",\n \"\\u01C7\", \"\\u004C\\u004A\",\n \"\\u01C8\", \"\\u004C\\u006A\",\n \"\\u01C9\", \"\\u006C\\u006A\",\n \"\\u01CA\", \"\\u004E\\u004A\",\n \"\\u01CB\", \"\\u004E\\u006A\",\n \"\\u01CC\", \"\\u006E\\u006A\",\n \"\\u01F1\", \"\\u0044\\u005A\",\n \"\\u01F2\", \"\\u0044\\u007A\",\n \"\\u01F3\", \"\\u0064\\u007A\",\n \"\\u02D8\", \"\\u0020\\u0306\",\n \"\\u02D9\", \"\\u0020\\u0307\",\n \"\\u02DA\", \"\\u0020\\u030A\",\n \"\\u02DB\", \"\\u0020\\u0328\",\n \"\\u02DC\", \"\\u0020\\u0303\",\n \"\\u02DD\", \"\\u0020\\u030B\",\n \"\\u037A\", \"\\u0020\\u0345\",\n \"\\u0384\", \"\\u0020\\u0301\",\n \"\\u03D0\", \"\\u03B2\",\n \"\\u03D1\", \"\\u03B8\",\n \"\\u03D2\", \"\\u03A5\",\n \"\\u03D5\", \"\\u03C6\",\n \"\\u03D6\", \"\\u03C0\",\n \"\\u03F0\", \"\\u03BA\",\n \"\\u03F1\", \"\\u03C1\",\n \"\\u03F2\", \"\\u03C2\",\n \"\\u03F4\", \"\\u0398\",\n \"\\u03F5\", \"\\u03B5\",\n \"\\u03F9\", \"\\u03A3\",\n \"\\u0587\", \"\\u0565\\u0582\",\n \"\\u0675\", \"\\u0627\\u0674\",\n \"\\u0676\", \"\\u0648\\u0674\",\n \"\\u0677\", \"\\u06C7\\u0674\",\n \"\\u0678\", \"\\u064A\\u0674\",\n \"\\u0E33\", \"\\u0E4D\\u0E32\",\n \"\\u0EB3\", \"\\u0ECD\\u0EB2\",\n \"\\u0EDC\", \"\\u0EAB\\u0E99\",\n \"\\u0EDD\", \"\\u0EAB\\u0EA1\",\n \"\\u0F77\", \"\\u0FB2\\u0F81\",\n \"\\u0F79\", \"\\u0FB3\\u0F81\",\n \"\\u1E9A\", \"\\u0061\\u02BE\",\n \"\\u1FBD\", \"\\u0020\\u0313\",\n \"\\u1FBF\", \"\\u0020\\u0313\",\n \"\\u1FC0\", \"\\u0020\\u0342\",\n \"\\u1FFE\", \"\\u0020\\u0314\",\n \"\\u2002\", \"\\u0020\",\n \"\\u2003\", \"\\u0020\",\n \"\\u2004\", \"\\u0020\",\n \"\\u2005\", \"\\u0020\",\n \"\\u2006\", \"\\u0020\",\n \"\\u2008\", \"\\u0020\",\n \"\\u2009\", \"\\u0020\",\n \"\\u200A\", \"\\u0020\",\n \"\\u2017\", \"\\u0020\\u0333\",\n \"\\u2024\", \"\\u002E\",\n \"\\u2025\", \"\\u002E\\u002E\",\n \"\\u2026\", \"\\u002E\\u002E\\u002E\",\n \"\\u2033\", \"\\u2032\\u2032\",\n \"\\u2034\", \"\\u2032\\u2032\\u2032\",\n \"\\u2036\", \"\\u2035\\u2035\",\n \"\\u2037\", \"\\u2035\\u2035\\u2035\",\n \"\\u203C\", \"\\u0021\\u0021\",\n \"\\u203E\", \"\\u0020\\u0305\",\n \"\\u2047\", \"\\u003F\\u003F\",\n \"\\u2048\", \"\\u003F\\u0021\",\n \"\\u2049\", \"\\u0021\\u003F\",\n \"\\u2057\", \"\\u2032\\u2032\\u2032\\u2032\",\n \"\\u205F\", \"\\u0020\",\n \"\\u20A8\", \"\\u0052\\u0073\",\n \"\\u2100\", \"\\u0061\\u002F\\u0063\",\n \"\\u2101\", \"\\u0061\\u002F\\u0073\",\n \"\\u2103\", \"\\u00B0\\u0043\",\n \"\\u2105\", \"\\u0063\\u002F\\u006F\",\n \"\\u2106\", \"\\u0063\\u002F\\u0075\",\n \"\\u2107\", \"\\u0190\",\n \"\\u2109\", \"\\u00B0\\u0046\",\n \"\\u2116\", \"\\u004E\\u006F\",\n \"\\u2121\", \"\\u0054\\u0045\\u004C\",\n \"\\u2135\", \"\\u05D0\",\n \"\\u2136\", \"\\u05D1\",\n \"\\u2137\", \"\\u05D2\",\n \"\\u2138\", \"\\u05D3\",\n \"\\u213B\", \"\\u0046\\u0041\\u0058\",\n \"\\u2160\", \"\\u0049\",\n \"\\u2161\", \"\\u0049\\u0049\",\n \"\\u2162\", \"\\u0049\\u0049\\u0049\",\n \"\\u2163\", \"\\u0049\\u0056\",\n \"\\u2164\", \"\\u0056\",\n \"\\u2165\", \"\\u0056\\u0049\",\n \"\\u2166\", \"\\u0056\\u0049\\u0049\",\n \"\\u2167\", \"\\u0056\\u0049\\u0049\\u0049\",\n \"\\u2168\", \"\\u0049\\u0058\",\n \"\\u2169\", \"\\u0058\",\n \"\\u216A\", \"\\u0058\\u0049\",\n \"\\u216B\", \"\\u0058\\u0049\\u0049\",\n \"\\u216C\", \"\\u004C\",\n \"\\u216D\", \"\\u0043\",\n \"\\u216E\", \"\\u0044\",\n \"\\u216F\", \"\\u004D\",\n \"\\u2170\", \"\\u0069\",\n \"\\u2171\", \"\\u0069\\u0069\",\n \"\\u2172\", \"\\u0069\\u0069\\u0069\",\n \"\\u2173\", \"\\u0069\\u0076\",\n \"\\u2174\", \"\\u0076\",\n \"\\u2175\", \"\\u0076\\u0069\",\n \"\\u2176\", \"\\u0076\\u0069\\u0069\",\n \"\\u2177\", \"\\u0076\\u0069\\u0069\\u0069\",\n \"\\u2178\", \"\\u0069\\u0078\",\n \"\\u2179\", \"\\u0078\",\n \"\\u217A\", \"\\u0078\\u0069\",\n \"\\u217B\", \"\\u0078\\u0069\\u0069\",\n \"\\u217C\", \"\\u006C\",\n \"\\u217D\", \"\\u0063\",\n \"\\u217E\", \"\\u0064\",\n \"\\u217F\", \"\\u006D\",\n \"\\u222C\", \"\\u222B\\u222B\",\n \"\\u222D\", \"\\u222B\\u222B\\u222B\",\n \"\\u222F\", \"\\u222E\\u222E\",\n \"\\u2230\", \"\\u222E\\u222E\\u222E\",\n \"\\u2474\", \"\\u0028\\u0031\\u0029\",\n \"\\u2475\", \"\\u0028\\u0032\\u0029\",\n \"\\u2476\", \"\\u0028\\u0033\\u0029\",\n \"\\u2477\", \"\\u0028\\u0034\\u0029\",\n \"\\u2478\", \"\\u0028\\u0035\\u0029\",\n \"\\u2479\", \"\\u0028\\u0036\\u0029\",\n \"\\u247A\", \"\\u0028\\u0037\\u0029\",\n \"\\u247B\", \"\\u0028\\u0038\\u0029\",\n \"\\u247C\", \"\\u0028\\u0039\\u0029\",\n \"\\u247D\", \"\\u0028\\u0031\\u0030\\u0029\",\n \"\\u247E\", \"\\u0028\\u0031\\u0031\\u0029\",\n \"\\u247F\", \"\\u0028\\u0031\\u0032\\u0029\",\n \"\\u2480\", \"\\u0028\\u0031\\u0033\\u0029\",\n \"\\u2481\", \"\\u0028\\u0031\\u0034\\u0029\",\n \"\\u2482\", \"\\u0028\\u0031\\u0035\\u0029\",\n \"\\u2483\", \"\\u0028\\u0031\\u0036\\u0029\",\n \"\\u2484\", \"\\u0028\\u0031\\u0037\\u0029\",\n \"\\u2485\", \"\\u0028\\u0031\\u0038\\u0029\",\n \"\\u2486\", \"\\u0028\\u0031\\u0039\\u0029\",\n \"\\u2487\", \"\\u0028\\u0032\\u0030\\u0029\",\n \"\\u2488\", \"\\u0031\\u002E\",\n \"\\u2489\", \"\\u0032\\u002E\",\n \"\\u248A\", \"\\u0033\\u002E\",\n \"\\u248B\", \"\\u0034\\u002E\",\n \"\\u248C\", \"\\u0035\\u002E\",\n \"\\u248D\", \"\\u0036\\u002E\",\n \"\\u248E\", \"\\u0037\\u002E\",\n \"\\u248F\", \"\\u0038\\u002E\",\n \"\\u2490\", \"\\u0039\\u002E\",\n \"\\u2491\", \"\\u0031\\u0030\\u002E\",\n \"\\u2492\", \"\\u0031\\u0031\\u002E\",\n \"\\u2493\", \"\\u0031\\u0032\\u002E\",\n \"\\u2494\", \"\\u0031\\u0033\\u002E\",\n \"\\u2495\", \"\\u0031\\u0034\\u002E\",\n \"\\u2496\", \"\\u0031\\u0035\\u002E\",\n \"\\u2497\", \"\\u0031\\u0036\\u002E\",\n \"\\u2498\", \"\\u0031\\u0037\\u002E\",\n \"\\u2499\", \"\\u0031\\u0038\\u002E\",\n \"\\u249A\", \"\\u0031\\u0039\\u002E\",\n \"\\u249B\", \"\\u0032\\u0030\\u002E\",\n \"\\u249C\", \"\\u0028\\u0061\\u0029\",\n \"\\u249D\", \"\\u0028\\u0062\\u0029\",\n \"\\u249E\", \"\\u0028\\u0063\\u0029\",\n \"\\u249F\", \"\\u0028\\u0064\\u0029\",\n \"\\u24A0\", \"\\u0028\\u0065\\u0029\",\n \"\\u24A1\", \"\\u0028\\u0066\\u0029\",\n \"\\u24A2\", \"\\u0028\\u0067\\u0029\",\n \"\\u24A3\", \"\\u0028\\u0068\\u0029\",\n \"\\u24A4\", \"\\u0028\\u0069\\u0029\",\n \"\\u24A5\", \"\\u0028\\u006A\\u0029\",\n \"\\u24A6\", \"\\u0028\\u006B\\u0029\",\n \"\\u24A7\", \"\\u0028\\u006C\\u0029\",\n \"\\u24A8\", \"\\u0028\\u006D\\u0029\",\n \"\\u24A9\", \"\\u0028\\u006E\\u0029\",\n \"\\u24AA\", \"\\u0028\\u006F\\u0029\",\n \"\\u24AB\", \"\\u0028\\u0070\\u0029\",\n \"\\u24AC\", \"\\u0028\\u0071\\u0029\",\n \"\\u24AD\", \"\\u0028\\u0072\\u0029\",\n \"\\u24AE\", \"\\u0028\\u0073\\u0029\",\n \"\\u24AF\", \"\\u0028\\u0074\\u0029\",\n \"\\u24B0\", \"\\u0028\\u0075\\u0029\",\n \"\\u24B1\", \"\\u0028\\u0076\\u0029\",\n \"\\u24B2\", \"\\u0028\\u0077\\u0029\",\n \"\\u24B3\", \"\\u0028\\u0078\\u0029\",\n \"\\u24B4\", \"\\u0028\\u0079\\u0029\",\n \"\\u24B5\", \"\\u0028\\u007A\\u0029\",\n \"\\u2A0C\", \"\\u222B\\u222B\\u222B\\u222B\",\n \"\\u2A74\", \"\\u003A\\u003A\\u003D\",\n \"\\u2A75\", \"\\u003D\\u003D\",\n \"\\u2A76\", \"\\u003D\\u003D\\u003D\",\n \"\\u2E9F\", \"\\u6BCD\",\n \"\\u2EF3\", \"\\u9F9F\",\n \"\\u2F00\", \"\\u4E00\",\n \"\\u2F01\", \"\\u4E28\",\n \"\\u2F02\", \"\\u4E36\",\n \"\\u2F03\", \"\\u4E3F\",\n \"\\u2F04\", \"\\u4E59\",\n \"\\u2F05\", \"\\u4E85\",\n \"\\u2F06\", \"\\u4E8C\",\n \"\\u2F07\", \"\\u4EA0\",\n \"\\u2F08\", \"\\u4EBA\",\n \"\\u2F09\", \"\\u513F\",\n \"\\u2F0A\", \"\\u5165\",\n \"\\u2F0B\", \"\\u516B\",\n \"\\u2F0C\", \"\\u5182\",\n \"\\u2F0D\", \"\\u5196\",\n \"\\u2F0E\", \"\\u51AB\",\n \"\\u2F0F\", \"\\u51E0\",\n \"\\u2F10\", \"\\u51F5\",\n \"\\u2F11\", \"\\u5200\",\n \"\\u2F12\", \"\\u529B\",\n \"\\u2F13\", \"\\u52F9\",\n \"\\u2F14\", \"\\u5315\",\n \"\\u2F15\", \"\\u531A\",\n \"\\u2F16\", \"\\u5338\",\n \"\\u2F17\", \"\\u5341\",\n \"\\u2F18\", \"\\u535C\",\n \"\\u2F19\", \"\\u5369\",\n \"\\u2F1A\", \"\\u5382\",\n \"\\u2F1B\", \"\\u53B6\",\n \"\\u2F1C\", \"\\u53C8\",\n \"\\u2F1D\", \"\\u53E3\",\n \"\\u2F1E\", \"\\u56D7\",\n \"\\u2F1F\", \"\\u571F\",\n \"\\u2F20\", \"\\u58EB\",\n \"\\u2F21\", \"\\u5902\",\n \"\\u2F22\", \"\\u590A\",\n \"\\u2F23\", \"\\u5915\",\n \"\\u2F24\", \"\\u5927\",\n \"\\u2F25\", \"\\u5973\",\n \"\\u2F26\", \"\\u5B50\",\n \"\\u2F27\", \"\\u5B80\",\n \"\\u2F28\", \"\\u5BF8\",\n \"\\u2F29\", \"\\u5C0F\",\n \"\\u2F2A\", \"\\u5C22\",\n \"\\u2F2B\", \"\\u5C38\",\n \"\\u2F2C\", \"\\u5C6E\",\n \"\\u2F2D\", \"\\u5C71\",\n \"\\u2F2E\", \"\\u5DDB\",\n \"\\u2F2F\", \"\\u5DE5\",\n \"\\u2F30\", \"\\u5DF1\",\n \"\\u2F31\", \"\\u5DFE\",\n \"\\u2F32\", \"\\u5E72\",\n \"\\u2F33\", \"\\u5E7A\",\n \"\\u2F34\", \"\\u5E7F\",\n \"\\u2F35\", \"\\u5EF4\",\n \"\\u2F36\", \"\\u5EFE\",\n \"\\u2F37\", \"\\u5F0B\",\n \"\\u2F38\", \"\\u5F13\",\n \"\\u2F39\", \"\\u5F50\",\n \"\\u2F3A\", \"\\u5F61\",\n \"\\u2F3B\", \"\\u5F73\",\n \"\\u2F3C\", \"\\u5FC3\",\n \"\\u2F3D\", \"\\u6208\",\n \"\\u2F3E\", \"\\u6236\",\n \"\\u2F3F\", \"\\u624B\",\n \"\\u2F40\", \"\\u652F\",\n \"\\u2F41\", \"\\u6534\",\n \"\\u2F42\", \"\\u6587\",\n \"\\u2F43\", \"\\u6597\",\n \"\\u2F44\", \"\\u65A4\",\n \"\\u2F45\", \"\\u65B9\",\n \"\\u2F46\", \"\\u65E0\",\n \"\\u2F47\", \"\\u65E5\",\n \"\\u2F48\", \"\\u66F0\",\n \"\\u2F49\", \"\\u6708\",\n \"\\u2F4A\", \"\\u6728\",\n \"\\u2F4B\", \"\\u6B20\",\n \"\\u2F4C\", \"\\u6B62\",\n \"\\u2F4D\", \"\\u6B79\",\n \"\\u2F4E\", \"\\u6BB3\",\n \"\\u2F4F\", \"\\u6BCB\",\n \"\\u2F50\", \"\\u6BD4\",\n \"\\u2F51\", \"\\u6BDB\",\n \"\\u2F52\", \"\\u6C0F\",\n \"\\u2F53\", \"\\u6C14\",\n \"\\u2F54\", \"\\u6C34\",\n \"\\u2F55\", \"\\u706B\",\n \"\\u2F56\", \"\\u722A\",\n \"\\u2F57\", \"\\u7236\",\n \"\\u2F58\", \"\\u723B\",\n \"\\u2F59\", \"\\u723F\",\n \"\\u2F5A\", \"\\u7247\",\n \"\\u2F5B\", \"\\u7259\",\n \"\\u2F5C\", \"\\u725B\",\n \"\\u2F5D\", \"\\u72AC\",\n \"\\u2F5E\", \"\\u7384\",\n \"\\u2F5F\", \"\\u7389\",\n \"\\u2F60\", \"\\u74DC\",\n \"\\u2F61\", \"\\u74E6\",\n \"\\u2F62\", \"\\u7518\",\n \"\\u2F63\", \"\\u751F\",\n \"\\u2F64\", \"\\u7528\",\n \"\\u2F65\", \"\\u7530\",\n \"\\u2F66\", \"\\u758B\",\n \"\\u2F67\", \"\\u7592\",\n \"\\u2F68\", \"\\u7676\",\n \"\\u2F69\", \"\\u767D\",\n \"\\u2F6A\", \"\\u76AE\",\n \"\\u2F6B\", \"\\u76BF\",\n \"\\u2F6C\", \"\\u76EE\",\n \"\\u2F6D\", \"\\u77DB\",\n \"\\u2F6E\", \"\\u77E2\",\n \"\\u2F6F\", \"\\u77F3\",\n \"\\u2F70\", \"\\u793A\",\n \"\\u2F71\", \"\\u79B8\",\n \"\\u2F72\", \"\\u79BE\",\n \"\\u2F73\", \"\\u7A74\",\n \"\\u2F74\", \"\\u7ACB\",\n \"\\u2F75\", \"\\u7AF9\",\n \"\\u2F76\", \"\\u7C73\",\n \"\\u2F77\", \"\\u7CF8\",\n \"\\u2F78\", \"\\u7F36\",\n \"\\u2F79\", \"\\u7F51\",\n \"\\u2F7A\", \"\\u7F8A\",\n \"\\u2F7B\", \"\\u7FBD\",\n \"\\u2F7C\", \"\\u8001\",\n \"\\u2F7D\", \"\\u800C\",\n \"\\u2F7E\", \"\\u8012\",\n \"\\u2F7F\", \"\\u8033\",\n \"\\u2F80\", \"\\u807F\",\n \"\\u2F81\", \"\\u8089\",\n \"\\u2F82\", \"\\u81E3\",\n \"\\u2F83\", \"\\u81EA\",\n \"\\u2F84\", \"\\u81F3\",\n \"\\u2F85\", \"\\u81FC\",\n \"\\u2F86\", \"\\u820C\",\n \"\\u2F87\", \"\\u821B\",\n \"\\u2F88\", \"\\u821F\",\n \"\\u2F89\", \"\\u826E\",\n \"\\u2F8A\", \"\\u8272\",\n \"\\u2F8B\", \"\\u8278\",\n \"\\u2F8C\", \"\\u864D\",\n \"\\u2F8D\", \"\\u866B\",\n \"\\u2F8E\", \"\\u8840\",\n \"\\u2F8F\", \"\\u884C\",\n \"\\u2F90\", \"\\u8863\",\n \"\\u2F91\", \"\\u897E\",\n \"\\u2F92\", \"\\u898B\",\n \"\\u2F93\", \"\\u89D2\",\n \"\\u2F94\", \"\\u8A00\",\n \"\\u2F95\", \"\\u8C37\",\n \"\\u2F96\", \"\\u8C46\",\n \"\\u2F97\", \"\\u8C55\",\n \"\\u2F98\", \"\\u8C78\",\n \"\\u2F99\", \"\\u8C9D\",\n \"\\u2F9A\", \"\\u8D64\",\n \"\\u2F9B\", \"\\u8D70\",\n \"\\u2F9C\", \"\\u8DB3\",\n \"\\u2F9D\", \"\\u8EAB\",\n \"\\u2F9E\", \"\\u8ECA\",\n \"\\u2F9F\", \"\\u8F9B\",\n \"\\u2FA0\", \"\\u8FB0\",\n \"\\u2FA1\", \"\\u8FB5\",\n \"\\u2FA2\", \"\\u9091\",\n \"\\u2FA3\", \"\\u9149\",\n \"\\u2FA4\", \"\\u91C6\",\n \"\\u2FA5\", \"\\u91CC\",\n \"\\u2FA6\", \"\\u91D1\",\n \"\\u2FA7\", \"\\u9577\",\n \"\\u2FA8\", \"\\u9580\",\n \"\\u2FA9\", \"\\u961C\",\n \"\\u2FAA\", \"\\u96B6\",\n \"\\u2FAB\", \"\\u96B9\",\n \"\\u2FAC\", \"\\u96E8\",\n \"\\u2FAD\", \"\\u9751\",\n \"\\u2FAE\", \"\\u975E\",\n \"\\u2FAF\", \"\\u9762\",\n \"\\u2FB0\", \"\\u9769\",\n \"\\u2FB1\", \"\\u97CB\",\n \"\\u2FB2\", \"\\u97ED\",\n \"\\u2FB3\", \"\\u97F3\",\n \"\\u2FB4\", \"\\u9801\",\n \"\\u2FB5\", \"\\u98A8\",\n \"\\u2FB6\", \"\\u98DB\",\n \"\\u2FB7\", \"\\u98DF\",\n \"\\u2FB8\", \"\\u9996\",\n \"\\u2FB9\", \"\\u9999\",\n \"\\u2FBA\", \"\\u99AC\",\n \"\\u2FBB\", \"\\u9AA8\",\n \"\\u2FBC\", \"\\u9AD8\",\n \"\\u2FBD\", \"\\u9ADF\",\n \"\\u2FBE\", \"\\u9B25\",\n \"\\u2FBF\", \"\\u9B2F\",\n \"\\u2FC0\", \"\\u9B32\",\n \"\\u2FC1\", \"\\u9B3C\",\n \"\\u2FC2\", \"\\u9B5A\",\n \"\\u2FC3\", \"\\u9CE5\",\n \"\\u2FC4\", \"\\u9E75\",\n \"\\u2FC5\", \"\\u9E7F\",\n \"\\u2FC6\", \"\\u9EA5\",\n \"\\u2FC7\", \"\\u9EBB\",\n \"\\u2FC8\", \"\\u9EC3\",\n \"\\u2FC9\", \"\\u9ECD\",\n \"\\u2FCA\", \"\\u9ED1\",\n \"\\u2FCB\", \"\\u9EF9\",\n \"\\u2FCC\", \"\\u9EFD\",\n \"\\u2FCD\", \"\\u9F0E\",\n \"\\u2FCE\", \"\\u9F13\",\n \"\\u2FCF\", \"\\u9F20\",\n \"\\u2FD0\", \"\\u9F3B\",\n \"\\u2FD1\", \"\\u9F4A\",\n \"\\u2FD2\", \"\\u9F52\",\n \"\\u2FD3\", \"\\u9F8D\",\n \"\\u2FD4\", \"\\u9F9C\",\n \"\\u2FD5\", \"\\u9FA0\",\n \"\\u3036\", \"\\u3012\",\n \"\\u3038\", \"\\u5341\",\n \"\\u3039\", \"\\u5344\",\n \"\\u303A\", \"\\u5345\",\n \"\\u309B\", \"\\u0020\\u3099\",\n \"\\u309C\", \"\\u0020\\u309A\",\n \"\\u3131\", \"\\u1100\",\n \"\\u3132\", \"\\u1101\",\n \"\\u3133\", \"\\u11AA\",\n \"\\u3134\", \"\\u1102\",\n \"\\u3135\", \"\\u11AC\",\n \"\\u3136\", \"\\u11AD\",\n \"\\u3137\", \"\\u1103\",\n \"\\u3138\", \"\\u1104\",\n \"\\u3139\", \"\\u1105\",\n \"\\u313A\", \"\\u11B0\",\n \"\\u313B\", \"\\u11B1\",\n \"\\u313C\", \"\\u11B2\",\n \"\\u313D\", \"\\u11B3\",\n \"\\u313E\", \"\\u11B4\",\n \"\\u313F\", \"\\u11B5\",\n \"\\u3140\", \"\\u111A\",\n \"\\u3141\", \"\\u1106\",\n \"\\u3142\", \"\\u1107\",\n \"\\u3143\", \"\\u1108\",\n \"\\u3144\", \"\\u1121\",\n \"\\u3145\", \"\\u1109\",\n \"\\u3146\", \"\\u110A\",\n \"\\u3147\", \"\\u110B\",\n \"\\u3148\", \"\\u110C\",\n \"\\u3149\", \"\\u110D\",\n \"\\u314A\", \"\\u110E\",\n \"\\u314B\", \"\\u110F\",\n \"\\u314C\", \"\\u1110\",\n \"\\u314D\", \"\\u1111\",\n \"\\u314E\", \"\\u1112\",\n \"\\u314F\", \"\\u1161\",\n \"\\u3150\", \"\\u1162\",\n \"\\u3151\", \"\\u1163\",\n \"\\u3152\", \"\\u1164\",\n \"\\u3153\", \"\\u1165\",\n \"\\u3154\", \"\\u1166\",\n \"\\u3155\", \"\\u1167\",\n \"\\u3156\", \"\\u1168\",\n \"\\u3157\", \"\\u1169\",\n \"\\u3158\", \"\\u116A\",\n \"\\u3159\", \"\\u116B\",\n \"\\u315A\", \"\\u116C\",\n \"\\u315B\", \"\\u116D\",\n \"\\u315C\", \"\\u116E\",\n \"\\u315D\", \"\\u116F\",\n \"\\u315E\", \"\\u1170\",\n \"\\u315F\", \"\\u1171\",\n \"\\u3160\", \"\\u1172\",\n \"\\u3161\", \"\\u1173\",\n \"\\u3162\", \"\\u1174\",\n \"\\u3163\", \"\\u1175\",\n \"\\u3164\", \"\\u1160\",\n \"\\u3165\", \"\\u1114\",\n \"\\u3166\", \"\\u1115\",\n \"\\u3167\", \"\\u11C7\",\n \"\\u3168\", \"\\u11C8\",\n \"\\u3169\", \"\\u11CC\",\n \"\\u316A\", \"\\u11CE\",\n \"\\u316B\", \"\\u11D3\",\n \"\\u316C\", \"\\u11D7\",\n \"\\u316D\", \"\\u11D9\",\n \"\\u316E\", \"\\u111C\",\n \"\\u316F\", \"\\u11DD\",\n \"\\u3170\", \"\\u11DF\",\n \"\\u3171\", \"\\u111D\",\n \"\\u3172\", \"\\u111E\",\n \"\\u3173\", \"\\u1120\",\n \"\\u3174\", \"\\u1122\",\n \"\\u3175\", \"\\u1123\",\n \"\\u3176\", \"\\u1127\",\n \"\\u3177\", \"\\u1129\",\n \"\\u3178\", \"\\u112B\",\n \"\\u3179\", \"\\u112C\",\n \"\\u317A\", \"\\u112D\",\n \"\\u317B\", \"\\u112E\",\n \"\\u317C\", \"\\u112F\",\n \"\\u317D\", \"\\u1132\",\n \"\\u317E\", \"\\u1136\",\n \"\\u317F\", \"\\u1140\",\n \"\\u3180\", \"\\u1147\",\n \"\\u3181\", \"\\u114C\",\n \"\\u3182\", \"\\u11F1\",\n \"\\u3183\", \"\\u11F2\",\n \"\\u3184\", \"\\u1157\",\n \"\\u3185\", \"\\u1158\",\n \"\\u3186\", \"\\u1159\",\n \"\\u3187\", \"\\u1184\",\n \"\\u3188\", \"\\u1185\",\n \"\\u3189\", \"\\u1188\",\n \"\\u318A\", \"\\u1191\",\n \"\\u318B\", \"\\u1192\",\n \"\\u318C\", \"\\u1194\",\n \"\\u318D\", \"\\u119E\",\n \"\\u318E\", \"\\u11A1\",\n \"\\u3200\", \"\\u0028\\u1100\\u0029\",\n \"\\u3201\", \"\\u0028\\u1102\\u0029\",\n \"\\u3202\", \"\\u0028\\u1103\\u0029\",\n \"\\u3203\", \"\\u0028\\u1105\\u0029\",\n \"\\u3204\", \"\\u0028\\u1106\\u0029\",\n \"\\u3205\", \"\\u0028\\u1107\\u0029\",\n \"\\u3206\", \"\\u0028\\u1109\\u0029\",\n \"\\u3207\", \"\\u0028\\u110B\\u0029\",\n \"\\u3208\", \"\\u0028\\u110C\\u0029\",\n \"\\u3209\", \"\\u0028\\u110E\\u0029\",\n \"\\u320A\", \"\\u0028\\u110F\\u0029\",\n \"\\u320B\", \"\\u0028\\u1110\\u0029\",\n \"\\u320C\", \"\\u0028\\u1111\\u0029\",\n \"\\u320D\", \"\\u0028\\u1112\\u0029\",\n \"\\u320E\", \"\\u0028\\u1100\\u1161\\u0029\",\n \"\\u320F\", \"\\u0028\\u1102\\u1161\\u0029\",\n \"\\u3210\", \"\\u0028\\u1103\\u1161\\u0029\",\n \"\\u3211\", \"\\u0028\\u1105\\u1161\\u0029\",\n \"\\u3212\", \"\\u0028\\u1106\\u1161\\u0029\",\n \"\\u3213\", \"\\u0028\\u1107\\u1161\\u0029\",\n \"\\u3214\", \"\\u0028\\u1109\\u1161\\u0029\",\n \"\\u3215\", \"\\u0028\\u110B\\u1161\\u0029\",\n \"\\u3216\", \"\\u0028\\u110C\\u1161\\u0029\",\n \"\\u3217\", \"\\u0028\\u110E\\u1161\\u0029\",\n \"\\u3218\", \"\\u0028\\u110F\\u1161\\u0029\",\n \"\\u3219\", \"\\u0028\\u1110\\u1161\\u0029\",\n \"\\u321A\", \"\\u0028\\u1111\\u1161\\u0029\",\n \"\\u321B\", \"\\u0028\\u1112\\u1161\\u0029\",\n \"\\u321C\", \"\\u0028\\u110C\\u116E\\u0029\",\n \"\\u321D\", \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n \"\\u321E\", \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n \"\\u3220\", \"\\u0028\\u4E00\\u0029\",\n \"\\u3221\", \"\\u0028\\u4E8C\\u0029\",\n \"\\u3222\", \"\\u0028\\u4E09\\u0029\",\n \"\\u3223\", \"\\u0028\\u56DB\\u0029\",\n \"\\u3224\", \"\\u0028\\u4E94\\u0029\",\n \"\\u3225\", \"\\u0028\\u516D\\u0029\",\n \"\\u3226\", \"\\u0028\\u4E03\\u0029\",\n \"\\u3227\", \"\\u0028\\u516B\\u0029\",\n \"\\u3228\", \"\\u0028\\u4E5D\\u0029\",\n \"\\u3229\", \"\\u0028\\u5341\\u0029\",\n \"\\u322A\", \"\\u0028\\u6708\\u0029\",\n \"\\u322B\", \"\\u0028\\u706B\\u0029\",\n \"\\u322C\", \"\\u0028\\u6C34\\u0029\",\n \"\\u322D\", \"\\u0028\\u6728\\u0029\",\n \"\\u322E\", \"\\u0028\\u91D1\\u0029\",\n \"\\u322F\", \"\\u0028\\u571F\\u0029\",\n \"\\u3230\", \"\\u0028\\u65E5\\u0029\",\n \"\\u3231\", \"\\u0028\\u682A\\u0029\",\n \"\\u3232\", \"\\u0028\\u6709\\u0029\",\n \"\\u3233\", \"\\u0028\\u793E\\u0029\",\n \"\\u3234\", \"\\u0028\\u540D\\u0029\",\n \"\\u3235\", \"\\u0028\\u7279\\u0029\",\n \"\\u3236\", \"\\u0028\\u8CA1\\u0029\",\n \"\\u3237\", \"\\u0028\\u795D\\u0029\",\n \"\\u3238\", \"\\u0028\\u52B4\\u0029\",\n \"\\u3239\", \"\\u0028\\u4EE3\\u0029\",\n \"\\u323A\", \"\\u0028\\u547C\\u0029\",\n \"\\u323B\", \"\\u0028\\u5B66\\u0029\",\n \"\\u323C\", \"\\u0028\\u76E3\\u0029\",\n \"\\u323D\", \"\\u0028\\u4F01\\u0029\",\n \"\\u323E\", \"\\u0028\\u8CC7\\u0029\",\n \"\\u323F\", \"\\u0028\\u5354\\u0029\",\n \"\\u3240\", \"\\u0028\\u796D\\u0029\",\n \"\\u3241\", \"\\u0028\\u4F11\\u0029\",\n \"\\u3242\", \"\\u0028\\u81EA\\u0029\",\n \"\\u3243\", \"\\u0028\\u81F3\\u0029\",\n \"\\u32C0\", \"\\u0031\\u6708\",\n \"\\u32C1\", \"\\u0032\\u6708\",\n \"\\u32C2\", \"\\u0033\\u6708\",\n \"\\u32C3\", \"\\u0034\\u6708\",\n \"\\u32C4\", \"\\u0035\\u6708\",\n \"\\u32C5\", \"\\u0036\\u6708\",\n \"\\u32C6\", \"\\u0037\\u6708\",\n \"\\u32C7\", \"\\u0038\\u6708\",\n \"\\u32C8\", \"\\u0039\\u6708\",\n \"\\u32C9\", \"\\u0031\\u0030\\u6708\",\n \"\\u32CA\", \"\\u0031\\u0031\\u6708\",\n \"\\u32CB\", \"\\u0031\\u0032\\u6708\",\n \"\\u3358\", \"\\u0030\\u70B9\",\n \"\\u3359\", \"\\u0031\\u70B9\",\n \"\\u335A\", \"\\u0032\\u70B9\",\n \"\\u335B\", \"\\u0033\\u70B9\",\n \"\\u335C\", \"\\u0034\\u70B9\",\n \"\\u335D\", \"\\u0035\\u70B9\",\n \"\\u335E\", \"\\u0036\\u70B9\",\n \"\\u335F\", \"\\u0037\\u70B9\",\n \"\\u3360\", \"\\u0038\\u70B9\",\n \"\\u3361\", \"\\u0039\\u70B9\",\n \"\\u3362\", \"\\u0031\\u0030\\u70B9\",\n \"\\u3363\", \"\\u0031\\u0031\\u70B9\",\n \"\\u3364\", \"\\u0031\\u0032\\u70B9\",\n \"\\u3365\", \"\\u0031\\u0033\\u70B9\",\n \"\\u3366\", \"\\u0031\\u0034\\u70B9\",\n \"\\u3367\", \"\\u0031\\u0035\\u70B9\",\n \"\\u3368\", \"\\u0031\\u0036\\u70B9\",\n \"\\u3369\", \"\\u0031\\u0037\\u70B9\",\n \"\\u336A\", \"\\u0031\\u0038\\u70B9\",\n \"\\u336B\", \"\\u0031\\u0039\\u70B9\",\n \"\\u336C\", \"\\u0032\\u0030\\u70B9\",\n \"\\u336D\", \"\\u0032\\u0031\\u70B9\",\n \"\\u336E\", \"\\u0032\\u0032\\u70B9\",\n \"\\u336F\", \"\\u0032\\u0033\\u70B9\",\n \"\\u3370\", \"\\u0032\\u0034\\u70B9\",\n \"\\u33E0\", \"\\u0031\\u65E5\",\n \"\\u33E1\", \"\\u0032\\u65E5\",\n \"\\u33E2\", \"\\u0033\\u65E5\",\n \"\\u33E3\", \"\\u0034\\u65E5\",\n \"\\u33E4\", \"\\u0035\\u65E5\",\n \"\\u33E5\", \"\\u0036\\u65E5\",\n \"\\u33E6\", \"\\u0037\\u65E5\",\n \"\\u33E7\", \"\\u0038\\u65E5\",\n \"\\u33E8\", \"\\u0039\\u65E5\",\n \"\\u33E9\", \"\\u0031\\u0030\\u65E5\",\n \"\\u33EA\", \"\\u0031\\u0031\\u65E5\",\n \"\\u33EB\", \"\\u0031\\u0032\\u65E5\",\n \"\\u33EC\", \"\\u0031\\u0033\\u65E5\",\n \"\\u33ED\", \"\\u0031\\u0034\\u65E5\",\n \"\\u33EE\", \"\\u0031\\u0035\\u65E5\",\n \"\\u33EF\", \"\\u0031\\u0036\\u65E5\",\n \"\\u33F0\", \"\\u0031\\u0037\\u65E5\",\n \"\\u33F1\", \"\\u0031\\u0038\\u65E5\",\n \"\\u33F2\", \"\\u0031\\u0039\\u65E5\",\n \"\\u33F3\", \"\\u0032\\u0030\\u65E5\",\n \"\\u33F4\", \"\\u0032\\u0031\\u65E5\",\n \"\\u33F5\", \"\\u0032\\u0032\\u65E5\",\n \"\\u33F6\", \"\\u0032\\u0033\\u65E5\",\n \"\\u33F7\", \"\\u0032\\u0034\\u65E5\",\n \"\\u33F8\", \"\\u0032\\u0035\\u65E5\",\n \"\\u33F9\", \"\\u0032\\u0036\\u65E5\",\n \"\\u33FA\", \"\\u0032\\u0037\\u65E5\",\n \"\\u33FB\", \"\\u0032\\u0038\\u65E5\",\n \"\\u33FC\", \"\\u0032\\u0039\\u65E5\",\n \"\\u33FD\", \"\\u0033\\u0030\\u65E5\",\n \"\\u33FE\", \"\\u0033\\u0031\\u65E5\",\n \"\\uFB00\", \"\\u0066\\u0066\",\n \"\\uFB01\", \"\\u0066\\u0069\",\n \"\\uFB02\", \"\\u0066\\u006C\",\n \"\\uFB03\", \"\\u0066\\u0066\\u0069\",\n \"\\uFB04\", \"\\u0066\\u0066\\u006C\",\n \"\\uFB05\", \"\\u017F\\u0074\",\n \"\\uFB06\", \"\\u0073\\u0074\",\n \"\\uFB13\", \"\\u0574\\u0576\",\n \"\\uFB14\", \"\\u0574\\u0565\",\n \"\\uFB15\", \"\\u0574\\u056B\",\n \"\\uFB16\", \"\\u057E\\u0576\",\n \"\\uFB17\", \"\\u0574\\u056D\",\n \"\\uFB4F\", \"\\u05D0\\u05DC\",\n \"\\uFB50\", \"\\u0671\",\n \"\\uFB51\", \"\\u0671\",\n \"\\uFB52\", \"\\u067B\",\n \"\\uFB53\", \"\\u067B\",\n \"\\uFB54\", \"\\u067B\",\n \"\\uFB55\", \"\\u067B\",\n \"\\uFB56\", \"\\u067E\",\n \"\\uFB57\", \"\\u067E\",\n \"\\uFB58\", \"\\u067E\",\n \"\\uFB59\", \"\\u067E\",\n \"\\uFB5A\", \"\\u0680\",\n \"\\uFB5B\", \"\\u0680\",\n \"\\uFB5C\", \"\\u0680\",\n \"\\uFB5D\", \"\\u0680\",\n \"\\uFB5E\", \"\\u067A\",\n \"\\uFB5F\", \"\\u067A\",\n \"\\uFB60\", \"\\u067A\",\n \"\\uFB61\", \"\\u067A\",\n \"\\uFB62\", \"\\u067F\",\n \"\\uFB63\", \"\\u067F\",\n \"\\uFB64\", \"\\u067F\",\n \"\\uFB65\", \"\\u067F\",\n \"\\uFB66\", \"\\u0679\",\n \"\\uFB67\", \"\\u0679\",\n \"\\uFB68\", \"\\u0679\",\n \"\\uFB69\", \"\\u0679\",\n \"\\uFB6A\", \"\\u06A4\",\n \"\\uFB6B\", \"\\u06A4\",\n \"\\uFB6C\", \"\\u06A4\",\n \"\\uFB6D\", \"\\u06A4\",\n \"\\uFB6E\", \"\\u06A6\",\n \"\\uFB6F\", \"\\u06A6\",\n \"\\uFB70\", \"\\u06A6\",\n \"\\uFB71\", \"\\u06A6\",\n \"\\uFB72\", \"\\u0684\",\n \"\\uFB73\", \"\\u0684\",\n \"\\uFB74\", \"\\u0684\",\n \"\\uFB75\", \"\\u0684\",\n \"\\uFB76\", \"\\u0683\",\n \"\\uFB77\", \"\\u0683\",\n \"\\uFB78\", \"\\u0683\",\n \"\\uFB79\", \"\\u0683\",\n \"\\uFB7A\", \"\\u0686\",\n \"\\uFB7B\", \"\\u0686\",\n \"\\uFB7C\", \"\\u0686\",\n \"\\uFB7D\", \"\\u0686\",\n \"\\uFB7E\", \"\\u0687\",\n \"\\uFB7F\", \"\\u0687\",\n \"\\uFB80\", \"\\u0687\",\n \"\\uFB81\", \"\\u0687\",\n \"\\uFB82\", \"\\u068D\",\n \"\\uFB83\", \"\\u068D\",\n \"\\uFB84\", \"\\u068C\",\n \"\\uFB85\", \"\\u068C\",\n \"\\uFB86\", \"\\u068E\",\n \"\\uFB87\", \"\\u068E\",\n \"\\uFB88\", \"\\u0688\",\n \"\\uFB89\", \"\\u0688\",\n \"\\uFB8A\", \"\\u0698\",\n \"\\uFB8B\", \"\\u0698\",\n \"\\uFB8C\", \"\\u0691\",\n \"\\uFB8D\", \"\\u0691\",\n \"\\uFB8E\", \"\\u06A9\",\n \"\\uFB8F\", \"\\u06A9\",\n \"\\uFB90\", \"\\u06A9\",\n \"\\uFB91\", \"\\u06A9\",\n \"\\uFB92\", \"\\u06AF\",\n \"\\uFB93\", \"\\u06AF\",\n \"\\uFB94\", \"\\u06AF\",\n \"\\uFB95\", \"\\u06AF\",\n \"\\uFB96\", \"\\u06B3\",\n \"\\uFB97\", \"\\u06B3\",\n \"\\uFB98\", \"\\u06B3\",\n \"\\uFB99\", \"\\u06B3\",\n \"\\uFB9A\", \"\\u06B1\",\n \"\\uFB9B\", \"\\u06B1\",\n \"\\uFB9C\", \"\\u06B1\",\n \"\\uFB9D\", \"\\u06B1\",\n \"\\uFB9E\", \"\\u06BA\",\n \"\\uFB9F\", \"\\u06BA\",\n \"\\uFBA0\", \"\\u06BB\",\n \"\\uFBA1\", \"\\u06BB\",\n \"\\uFBA2\", \"\\u06BB\",\n \"\\uFBA3\", \"\\u06BB\",\n \"\\uFBA4\", \"\\u06C0\",\n \"\\uFBA5\", \"\\u06C0\",\n \"\\uFBA6\", \"\\u06C1\",\n \"\\uFBA7\", \"\\u06C1\",\n \"\\uFBA8\", \"\\u06C1\",\n \"\\uFBA9\", \"\\u06C1\",\n \"\\uFBAA\", \"\\u06BE\",\n \"\\uFBAB\", \"\\u06BE\",\n \"\\uFBAC\", \"\\u06BE\",\n \"\\uFBAD\", \"\\u06BE\",\n \"\\uFBAE\", \"\\u06D2\",\n \"\\uFBAF\", \"\\u06D2\",\n \"\\uFBB0\", \"\\u06D3\",\n \"\\uFBB1\", \"\\u06D3\",\n \"\\uFBD3\", \"\\u06AD\",\n \"\\uFBD4\", \"\\u06AD\",\n \"\\uFBD5\", \"\\u06AD\",\n \"\\uFBD6\", \"\\u06AD\",\n \"\\uFBD7\", \"\\u06C7\",\n \"\\uFBD8\", \"\\u06C7\",\n \"\\uFBD9\", \"\\u06C6\",\n \"\\uFBDA\", \"\\u06C6\",\n \"\\uFBDB\", \"\\u06C8\",\n \"\\uFBDC\", \"\\u06C8\",\n \"\\uFBDD\", \"\\u0677\",\n \"\\uFBDE\", \"\\u06CB\",\n \"\\uFBDF\", \"\\u06CB\",\n \"\\uFBE0\", \"\\u06C5\",\n \"\\uFBE1\", \"\\u06C5\",\n \"\\uFBE2\", \"\\u06C9\",\n \"\\uFBE3\", \"\\u06C9\",\n \"\\uFBE4\", \"\\u06D0\",\n \"\\uFBE5\", \"\\u06D0\",\n \"\\uFBE6\", \"\\u06D0\",\n \"\\uFBE7\", \"\\u06D0\",\n \"\\uFBE8\", \"\\u0649\",\n \"\\uFBE9\", \"\\u0649\",\n \"\\uFBEA\", \"\\u0626\\u0627\",\n \"\\uFBEB\", \"\\u0626\\u0627\",\n \"\\uFBEC\", \"\\u0626\\u06D5\",\n \"\\uFBED\", \"\\u0626\\u06D5\",\n \"\\uFBEE\", \"\\u0626\\u0648\",\n \"\\uFBEF\", \"\\u0626\\u0648\",\n \"\\uFBF0\", \"\\u0626\\u06C7\",\n \"\\uFBF1\", \"\\u0626\\u06C7\",\n \"\\uFBF2\", \"\\u0626\\u06C6\",\n \"\\uFBF3\", \"\\u0626\\u06C6\",\n \"\\uFBF4\", \"\\u0626\\u06C8\",\n \"\\uFBF5\", \"\\u0626\\u06C8\",\n \"\\uFBF6\", \"\\u0626\\u06D0\",\n \"\\uFBF7\", \"\\u0626\\u06D0\",\n \"\\uFBF8\", \"\\u0626\\u06D0\",\n \"\\uFBF9\", \"\\u0626\\u0649\",\n \"\\uFBFA\", \"\\u0626\\u0649\",\n \"\\uFBFB\", \"\\u0626\\u0649\",\n \"\\uFBFC\", \"\\u06CC\",\n \"\\uFBFD\", \"\\u06CC\",\n \"\\uFBFE\", \"\\u06CC\",\n \"\\uFBFF\", \"\\u06CC\",\n \"\\uFC00\", \"\\u0626\\u062C\",\n \"\\uFC01\", \"\\u0626\\u062D\",\n \"\\uFC02\", \"\\u0626\\u0645\",\n \"\\uFC03\", \"\\u0626\\u0649\",\n \"\\uFC04\", \"\\u0626\\u064A\",\n \"\\uFC05\", \"\\u0628\\u062C\",\n \"\\uFC06\", \"\\u0628\\u062D\",\n \"\\uFC07\", \"\\u0628\\u062E\",\n \"\\uFC08\", \"\\u0628\\u0645\",\n \"\\uFC09\", \"\\u0628\\u0649\",\n \"\\uFC0A\", \"\\u0628\\u064A\",\n \"\\uFC0B\", \"\\u062A\\u062C\",\n \"\\uFC0C\", \"\\u062A\\u062D\",\n \"\\uFC0D\", \"\\u062A\\u062E\",\n \"\\uFC0E\", \"\\u062A\\u0645\",\n \"\\uFC0F\", \"\\u062A\\u0649\",\n \"\\uFC10\", \"\\u062A\\u064A\",\n \"\\uFC11\", \"\\u062B\\u062C\",\n \"\\uFC12\", \"\\u062B\\u0645\",\n \"\\uFC13\", \"\\u062B\\u0649\",\n \"\\uFC14\", \"\\u062B\\u064A\",\n \"\\uFC15\", \"\\u062C\\u062D\",\n \"\\uFC16\", \"\\u062C\\u0645\",\n \"\\uFC17\", \"\\u062D\\u062C\",\n \"\\uFC18\", \"\\u062D\\u0645\",\n \"\\uFC19\", \"\\u062E\\u062C\",\n \"\\uFC1A\", \"\\u062E\\u062D\",\n \"\\uFC1B\", \"\\u062E\\u0645\",\n \"\\uFC1C\", \"\\u0633\\u062C\",\n \"\\uFC1D\", \"\\u0633\\u062D\",\n \"\\uFC1E\", \"\\u0633\\u062E\",\n \"\\uFC1F\", \"\\u0633\\u0645\",\n \"\\uFC20\", \"\\u0635\\u062D\",\n \"\\uFC21\", \"\\u0635\\u0645\",\n \"\\uFC22\", \"\\u0636\\u062C\",\n \"\\uFC23\", \"\\u0636\\u062D\",\n \"\\uFC24\", \"\\u0636\\u062E\",\n \"\\uFC25\", \"\\u0636\\u0645\",\n \"\\uFC26\", \"\\u0637\\u062D\",\n \"\\uFC27\", \"\\u0637\\u0645\",\n \"\\uFC28\", \"\\u0638\\u0645\",\n \"\\uFC29\", \"\\u0639\\u062C\",\n \"\\uFC2A\", \"\\u0639\\u0645\",\n \"\\uFC2B\", \"\\u063A\\u062C\",\n \"\\uFC2C\", \"\\u063A\\u0645\",\n \"\\uFC2D\", \"\\u0641\\u062C\",\n \"\\uFC2E\", \"\\u0641\\u062D\",\n \"\\uFC2F\", \"\\u0641\\u062E\",\n \"\\uFC30\", \"\\u0641\\u0645\",\n \"\\uFC31\", \"\\u0641\\u0649\",\n \"\\uFC32\", \"\\u0641\\u064A\",\n \"\\uFC33\", \"\\u0642\\u062D\",\n \"\\uFC34\", \"\\u0642\\u0645\",\n \"\\uFC35\", \"\\u0642\\u0649\",\n \"\\uFC36\", \"\\u0642\\u064A\",\n \"\\uFC37\", \"\\u0643\\u0627\",\n \"\\uFC38\", \"\\u0643\\u062C\",\n \"\\uFC39\", \"\\u0643\\u062D\",\n \"\\uFC3A\", \"\\u0643\\u062E\",\n \"\\uFC3B\", \"\\u0643\\u0644\",\n \"\\uFC3C\", \"\\u0643\\u0645\",\n \"\\uFC3D\", \"\\u0643\\u0649\",\n \"\\uFC3E\", \"\\u0643\\u064A\",\n \"\\uFC3F\", \"\\u0644\\u062C\",\n \"\\uFC40\", \"\\u0644\\u062D\",\n \"\\uFC41\", \"\\u0644\\u062E\",\n \"\\uFC42\", \"\\u0644\\u0645\",\n \"\\uFC43\", \"\\u0644\\u0649\",\n \"\\uFC44\", \"\\u0644\\u064A\",\n \"\\uFC45\", \"\\u0645\\u062C\",\n \"\\uFC46\", \"\\u0645\\u062D\",\n \"\\uFC47\", \"\\u0645\\u062E\",\n \"\\uFC48\", \"\\u0645\\u0645\",\n \"\\uFC49\", \"\\u0645\\u0649\",\n \"\\uFC4A\", \"\\u0645\\u064A\",\n \"\\uFC4B\", \"\\u0646\\u062C\",\n \"\\uFC4C\", \"\\u0646\\u062D\",\n \"\\uFC4D\", \"\\u0646\\u062E\",\n \"\\uFC4E\", \"\\u0646\\u0645\",\n \"\\uFC4F\", \"\\u0646\\u0649\",\n \"\\uFC50\", \"\\u0646\\u064A\",\n \"\\uFC51\", \"\\u0647\\u062C\",\n \"\\uFC52\", \"\\u0647\\u0645\",\n \"\\uFC53\", \"\\u0647\\u0649\",\n \"\\uFC54\", \"\\u0647\\u064A\",\n \"\\uFC55\", \"\\u064A\\u062C\",\n \"\\uFC56\", \"\\u064A\\u062D\",\n \"\\uFC57\", \"\\u064A\\u062E\",\n \"\\uFC58\", \"\\u064A\\u0645\",\n \"\\uFC59\", \"\\u064A\\u0649\",\n \"\\uFC5A\", \"\\u064A\\u064A\",\n \"\\uFC5B\", \"\\u0630\\u0670\",\n \"\\uFC5C\", \"\\u0631\\u0670\",\n \"\\uFC5D\", \"\\u0649\\u0670\",\n \"\\uFC5E\", \"\\u0020\\u064C\\u0651\",\n \"\\uFC5F\", \"\\u0020\\u064D\\u0651\",\n \"\\uFC60\", \"\\u0020\\u064E\\u0651\",\n \"\\uFC61\", \"\\u0020\\u064F\\u0651\",\n \"\\uFC62\", \"\\u0020\\u0650\\u0651\",\n \"\\uFC63\", \"\\u0020\\u0651\\u0670\",\n \"\\uFC64\", \"\\u0626\\u0631\",\n \"\\uFC65\", \"\\u0626\\u0632\",\n \"\\uFC66\", \"\\u0626\\u0645\",\n \"\\uFC67\", \"\\u0626\\u0646\",\n \"\\uFC68\", \"\\u0626\\u0649\",\n \"\\uFC69\", \"\\u0626\\u064A\",\n \"\\uFC6A\", \"\\u0628\\u0631\",\n \"\\uFC6B\", \"\\u0628\\u0632\",\n \"\\uFC6C\", \"\\u0628\\u0645\",\n \"\\uFC6D\", \"\\u0628\\u0646\",\n \"\\uFC6E\", \"\\u0628\\u0649\",\n \"\\uFC6F\", \"\\u0628\\u064A\",\n \"\\uFC70\", \"\\u062A\\u0631\",\n \"\\uFC71\", \"\\u062A\\u0632\",\n \"\\uFC72\", \"\\u062A\\u0645\",\n \"\\uFC73\", \"\\u062A\\u0646\",\n \"\\uFC74\", \"\\u062A\\u0649\",\n \"\\uFC75\", \"\\u062A\\u064A\",\n \"\\uFC76\", \"\\u062B\\u0631\",\n \"\\uFC77\", \"\\u062B\\u0632\",\n \"\\uFC78\", \"\\u062B\\u0645\",\n \"\\uFC79\", \"\\u062B\\u0646\",\n \"\\uFC7A\", \"\\u062B\\u0649\",\n \"\\uFC7B\", \"\\u062B\\u064A\",\n \"\\uFC7C\", \"\\u0641\\u0649\",\n \"\\uFC7D\", \"\\u0641\\u064A\",\n \"\\uFC7E\", \"\\u0642\\u0649\",\n \"\\uFC7F\", \"\\u0642\\u064A\",\n \"\\uFC80\", \"\\u0643\\u0627\",\n \"\\uFC81\", \"\\u0643\\u0644\",\n \"\\uFC82\", \"\\u0643\\u0645\",\n \"\\uFC83\", \"\\u0643\\u0649\",\n \"\\uFC84\", \"\\u0643\\u064A\",\n \"\\uFC85\", \"\\u0644\\u0645\",\n \"\\uFC86\", \"\\u0644\\u0649\",\n \"\\uFC87\", \"\\u0644\\u064A\",\n \"\\uFC88\", \"\\u0645\\u0627\",\n \"\\uFC89\", \"\\u0645\\u0645\",\n \"\\uFC8A\", \"\\u0646\\u0631\",\n \"\\uFC8B\", \"\\u0646\\u0632\",\n \"\\uFC8C\", \"\\u0646\\u0645\",\n \"\\uFC8D\", \"\\u0646\\u0646\",\n \"\\uFC8E\", \"\\u0646\\u0649\",\n \"\\uFC8F\", \"\\u0646\\u064A\",\n \"\\uFC90\", \"\\u0649\\u0670\",\n \"\\uFC91\", \"\\u064A\\u0631\",\n \"\\uFC92\", \"\\u064A\\u0632\",\n \"\\uFC93\", \"\\u064A\\u0645\",\n \"\\uFC94\", \"\\u064A\\u0646\",\n \"\\uFC95\", \"\\u064A\\u0649\",\n \"\\uFC96\", \"\\u064A\\u064A\",\n \"\\uFC97\", \"\\u0626\\u062C\",\n \"\\uFC98\", \"\\u0626\\u062D\",\n \"\\uFC99\", \"\\u0626\\u062E\",\n \"\\uFC9A\", \"\\u0626\\u0645\",\n \"\\uFC9B\", \"\\u0626\\u0647\",\n \"\\uFC9C\", \"\\u0628\\u062C\",\n \"\\uFC9D\", \"\\u0628\\u062D\",\n \"\\uFC9E\", \"\\u0628\\u062E\",\n \"\\uFC9F\", \"\\u0628\\u0645\",\n \"\\uFCA0\", \"\\u0628\\u0647\",\n \"\\uFCA1\", \"\\u062A\\u062C\",\n \"\\uFCA2\", \"\\u062A\\u062D\",\n \"\\uFCA3\", \"\\u062A\\u062E\",\n \"\\uFCA4\", \"\\u062A\\u0645\",\n \"\\uFCA5\", \"\\u062A\\u0647\",\n \"\\uFCA6\", \"\\u062B\\u0645\",\n \"\\uFCA7\", \"\\u062C\\u062D\",\n \"\\uFCA8\", \"\\u062C\\u0645\",\n \"\\uFCA9\", \"\\u062D\\u062C\",\n \"\\uFCAA\", \"\\u062D\\u0645\",\n \"\\uFCAB\", \"\\u062E\\u062C\",\n \"\\uFCAC\", \"\\u062E\\u0645\",\n \"\\uFCAD\", \"\\u0633\\u062C\",\n \"\\uFCAE\", \"\\u0633\\u062D\",\n \"\\uFCAF\", \"\\u0633\\u062E\",\n \"\\uFCB0\", \"\\u0633\\u0645\",\n \"\\uFCB1\", \"\\u0635\\u062D\",\n \"\\uFCB2\", \"\\u0635\\u062E\",\n \"\\uFCB3\", \"\\u0635\\u0645\",\n \"\\uFCB4\", \"\\u0636\\u062C\",\n \"\\uFCB5\", \"\\u0636\\u062D\",\n \"\\uFCB6\", \"\\u0636\\u062E\",\n \"\\uFCB7\", \"\\u0636\\u0645\",\n \"\\uFCB8\", \"\\u0637\\u062D\",\n \"\\uFCB9\", \"\\u0638\\u0645\",\n \"\\uFCBA\", \"\\u0639\\u062C\",\n \"\\uFCBB\", \"\\u0639\\u0645\",\n \"\\uFCBC\", \"\\u063A\\u062C\",\n \"\\uFCBD\", \"\\u063A\\u0645\",\n \"\\uFCBE\", \"\\u0641\\u062C\",\n \"\\uFCBF\", \"\\u0641\\u062D\",\n \"\\uFCC0\", \"\\u0641\\u062E\",\n \"\\uFCC1\", \"\\u0641\\u0645\",\n \"\\uFCC2\", \"\\u0642\\u062D\",\n \"\\uFCC3\", \"\\u0642\\u0645\",\n \"\\uFCC4\", \"\\u0643\\u062C\",\n \"\\uFCC5\", \"\\u0643\\u062D\",\n \"\\uFCC6\", \"\\u0643\\u062E\",\n \"\\uFCC7\", \"\\u0643\\u0644\",\n \"\\uFCC8\", \"\\u0643\\u0645\",\n \"\\uFCC9\", \"\\u0644\\u062C\",\n \"\\uFCCA\", \"\\u0644\\u062D\",\n \"\\uFCCB\", \"\\u0644\\u062E\",\n \"\\uFCCC\", \"\\u0644\\u0645\",\n \"\\uFCCD\", \"\\u0644\\u0647\",\n \"\\uFCCE\", \"\\u0645\\u062C\",\n \"\\uFCCF\", \"\\u0645\\u062D\",\n \"\\uFCD0\", \"\\u0645\\u062E\",\n \"\\uFCD1\", \"\\u0645\\u0645\",\n \"\\uFCD2\", \"\\u0646\\u062C\",\n \"\\uFCD3\", \"\\u0646\\u062D\",\n \"\\uFCD4\", \"\\u0646\\u062E\",\n \"\\uFCD5\", \"\\u0646\\u0645\",\n \"\\uFCD6\", \"\\u0646\\u0647\",\n \"\\uFCD7\", \"\\u0647\\u062C\",\n \"\\uFCD8\", \"\\u0647\\u0645\",\n \"\\uFCD9\", \"\\u0647\\u0670\",\n \"\\uFCDA\", \"\\u064A\\u062C\",\n \"\\uFCDB\", \"\\u064A\\u062D\",\n \"\\uFCDC\", \"\\u064A\\u062E\",\n \"\\uFCDD\", \"\\u064A\\u0645\",\n \"\\uFCDE\", \"\\u064A\\u0647\",\n \"\\uFCDF\", \"\\u0626\\u0645\",\n \"\\uFCE0\", \"\\u0626\\u0647\",\n \"\\uFCE1\", \"\\u0628\\u0645\",\n \"\\uFCE2\", \"\\u0628\\u0647\",\n \"\\uFCE3\", \"\\u062A\\u0645\",\n \"\\uFCE4\", \"\\u062A\\u0647\",\n \"\\uFCE5\", \"\\u062B\\u0645\",\n \"\\uFCE6\", \"\\u062B\\u0647\",\n \"\\uFCE7\", \"\\u0633\\u0645\",\n \"\\uFCE8\", \"\\u0633\\u0647\",\n \"\\uFCE9\", \"\\u0634\\u0645\",\n \"\\uFCEA\", \"\\u0634\\u0647\",\n \"\\uFCEB\", \"\\u0643\\u0644\",\n \"\\uFCEC\", \"\\u0643\\u0645\",\n \"\\uFCED\", \"\\u0644\\u0645\",\n \"\\uFCEE\", \"\\u0646\\u0645\",\n \"\\uFCEF\", \"\\u0646\\u0647\",\n \"\\uFCF0\", \"\\u064A\\u0645\",\n \"\\uFCF1\", \"\\u064A\\u0647\",\n \"\\uFCF2\", \"\\u0640\\u064E\\u0651\",\n \"\\uFCF3\", \"\\u0640\\u064F\\u0651\",\n \"\\uFCF4\", \"\\u0640\\u0650\\u0651\",\n \"\\uFCF5\", \"\\u0637\\u0649\",\n \"\\uFCF6\", \"\\u0637\\u064A\",\n \"\\uFCF7\", \"\\u0639\\u0649\",\n \"\\uFCF8\", \"\\u0639\\u064A\",\n \"\\uFCF9\", \"\\u063A\\u0649\",\n \"\\uFCFA\", \"\\u063A\\u064A\",\n \"\\uFCFB\", \"\\u0633\\u0649\",\n \"\\uFCFC\", \"\\u0633\\u064A\",\n \"\\uFCFD\", \"\\u0634\\u0649\",\n \"\\uFCFE\", \"\\u0634\\u064A\",\n \"\\uFCFF\", \"\\u062D\\u0649\",\n \"\\uFD00\", \"\\u062D\\u064A\",\n \"\\uFD01\", \"\\u062C\\u0649\",\n \"\\uFD02\", \"\\u062C\\u064A\",\n \"\\uFD03\", \"\\u062E\\u0649\",\n \"\\uFD04\", \"\\u062E\\u064A\",\n \"\\uFD05\", \"\\u0635\\u0649\",\n \"\\uFD06\", \"\\u0635\\u064A\",\n \"\\uFD07\", \"\\u0636\\u0649\",\n \"\\uFD08\", \"\\u0636\\u064A\",\n \"\\uFD09\", \"\\u0634\\u062C\",\n \"\\uFD0A\", \"\\u0634\\u062D\",\n \"\\uFD0B\", \"\\u0634\\u062E\",\n \"\\uFD0C\", \"\\u0634\\u0645\",\n \"\\uFD0D\", \"\\u0634\\u0631\",\n \"\\uFD0E\", \"\\u0633\\u0631\",\n \"\\uFD0F\", \"\\u0635\\u0631\",\n \"\\uFD10\", \"\\u0636\\u0631\",\n \"\\uFD11\", \"\\u0637\\u0649\",\n \"\\uFD12\", \"\\u0637\\u064A\",\n \"\\uFD13\", \"\\u0639\\u0649\",\n \"\\uFD14\", \"\\u0639\\u064A\",\n \"\\uFD15\", \"\\u063A\\u0649\",\n \"\\uFD16\", \"\\u063A\\u064A\",\n \"\\uFD17\", \"\\u0633\\u0649\",\n \"\\uFD18\", \"\\u0633\\u064A\",\n \"\\uFD19\", \"\\u0634\\u0649\",\n \"\\uFD1A\", \"\\u0634\\u064A\",\n \"\\uFD1B\", \"\\u062D\\u0649\",\n \"\\uFD1C\", \"\\u062D\\u064A\",\n \"\\uFD1D\", \"\\u062C\\u0649\",\n \"\\uFD1E\", \"\\u062C\\u064A\",\n \"\\uFD1F\", \"\\u062E\\u0649\",\n \"\\uFD20\", \"\\u062E\\u064A\",\n \"\\uFD21\", \"\\u0635\\u0649\",\n \"\\uFD22\", \"\\u0635\\u064A\",\n \"\\uFD23\", \"\\u0636\\u0649\",\n \"\\uFD24\", \"\\u0636\\u064A\",\n \"\\uFD25\", \"\\u0634\\u062C\",\n \"\\uFD26\", \"\\u0634\\u062D\",\n \"\\uFD27\", \"\\u0634\\u062E\",\n \"\\uFD28\", \"\\u0634\\u0645\",\n \"\\uFD29\", \"\\u0634\\u0631\",\n \"\\uFD2A\", \"\\u0633\\u0631\",\n \"\\uFD2B\", \"\\u0635\\u0631\",\n \"\\uFD2C\", \"\\u0636\\u0631\",\n \"\\uFD2D\", \"\\u0634\\u062C\",\n \"\\uFD2E\", \"\\u0634\\u062D\",\n \"\\uFD2F\", \"\\u0634\\u062E\",\n \"\\uFD30\", \"\\u0634\\u0645\",\n \"\\uFD31\", \"\\u0633\\u0647\",\n \"\\uFD32\", \"\\u0634\\u0647\",\n \"\\uFD33\", \"\\u0637\\u0645\",\n \"\\uFD34\", \"\\u0633\\u062C\",\n \"\\uFD35\", \"\\u0633\\u062D\",\n \"\\uFD36\", \"\\u0633\\u062E\",\n \"\\uFD37\", \"\\u0634\\u062C\",\n \"\\uFD38\", \"\\u0634\\u062D\",\n \"\\uFD39\", \"\\u0634\\u062E\",\n \"\\uFD3A\", \"\\u0637\\u0645\",\n \"\\uFD3B\", \"\\u0638\\u0645\",\n \"\\uFD3C\", \"\\u0627\\u064B\",\n \"\\uFD3D\", \"\\u0627\\u064B\",\n \"\\uFD50\", \"\\u062A\\u062C\\u0645\",\n \"\\uFD51\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD52\", \"\\u062A\\u062D\\u062C\",\n \"\\uFD53\", \"\\u062A\\u062D\\u0645\",\n \"\\uFD54\", \"\\u062A\\u062E\\u0645\",\n \"\\uFD55\", \"\\u062A\\u0645\\u062C\",\n \"\\uFD56\", \"\\u062A\\u0645\\u062D\",\n \"\\uFD57\", \"\\u062A\\u0645\\u062E\",\n \"\\uFD58\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD59\", \"\\u062C\\u0645\\u062D\",\n \"\\uFD5A\", \"\\u062D\\u0645\\u064A\",\n \"\\uFD5B\", \"\\u062D\\u0645\\u0649\",\n \"\\uFD5C\", \"\\u0633\\u062D\\u062C\",\n \"\\uFD5D\", \"\\u0633\\u062C\\u062D\",\n \"\\uFD5E\", \"\\u0633\\u062C\\u0649\",\n \"\\uFD5F\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD60\", \"\\u0633\\u0645\\u062D\",\n \"\\uFD61\", \"\\u0633\\u0645\\u062C\",\n \"\\uFD62\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD63\", \"\\u0633\\u0645\\u0645\",\n \"\\uFD64\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD65\", \"\\u0635\\u062D\\u062D\",\n \"\\uFD66\", \"\\u0635\\u0645\\u0645\",\n \"\\uFD67\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD68\", \"\\u0634\\u062D\\u0645\",\n \"\\uFD69\", \"\\u0634\\u062C\\u064A\",\n \"\\uFD6A\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6B\", \"\\u0634\\u0645\\u062E\",\n \"\\uFD6C\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6D\", \"\\u0634\\u0645\\u0645\",\n \"\\uFD6E\", \"\\u0636\\u062D\\u0649\",\n \"\\uFD6F\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD70\", \"\\u0636\\u062E\\u0645\",\n \"\\uFD71\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD72\", \"\\u0637\\u0645\\u062D\",\n \"\\uFD73\", \"\\u0637\\u0645\\u0645\",\n \"\\uFD74\", \"\\u0637\\u0645\\u064A\",\n \"\\uFD75\", \"\\u0639\\u062C\\u0645\",\n \"\\uFD76\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD77\", \"\\u0639\\u0645\\u0645\",\n \"\\uFD78\", \"\\u0639\\u0645\\u0649\",\n \"\\uFD79\", \"\\u063A\\u0645\\u0645\",\n \"\\uFD7A\", \"\\u063A\\u0645\\u064A\",\n \"\\uFD7B\", \"\\u063A\\u0645\\u0649\",\n \"\\uFD7C\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7D\", \"\\u0641\\u062E\\u0645\",\n \"\\uFD7E\", \"\\u0642\\u0645\\u062D\",\n \"\\uFD7F\", \"\\u0642\\u0645\\u0645\",\n \"\\uFD80\", \"\\u0644\\u062D\\u0645\",\n \"\\uFD81\", \"\\u0644\\u062D\\u064A\",\n \"\\uFD82\", \"\\u0644\\u062D\\u0649\",\n \"\\uFD83\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD84\", \"\\u0644\\u062C\\u062C\",\n \"\\uFD85\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD86\", \"\\u0644\\u062E\\u0645\",\n \"\\uFD87\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD88\", \"\\u0644\\u0645\\u062D\",\n \"\\uFD89\", \"\\u0645\\u062D\\u062C\",\n \"\\uFD8A\", \"\\u0645\\u062D\\u0645\",\n \"\\uFD8B\", \"\\u0645\\u062D\\u064A\",\n \"\\uFD8C\", \"\\u0645\\u062C\\u062D\",\n \"\\uFD8D\", \"\\u0645\\u062C\\u0645\",\n \"\\uFD8E\", \"\\u0645\\u062E\\u062C\",\n \"\\uFD8F\", \"\\u0645\\u062E\\u0645\",\n \"\\uFD92\", \"\\u0645\\u062C\\u062E\",\n \"\\uFD93\", \"\\u0647\\u0645\\u062C\",\n \"\\uFD94\", \"\\u0647\\u0645\\u0645\",\n \"\\uFD95\", \"\\u0646\\u062D\\u0645\",\n \"\\uFD96\", \"\\u0646\\u062D\\u0649\",\n \"\\uFD97\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD98\", \"\\u0646\\u062C\\u0645\",\n \"\\uFD99\", \"\\u0646\\u062C\\u0649\",\n \"\\uFD9A\", \"\\u0646\\u0645\\u064A\",\n \"\\uFD9B\", \"\\u0646\\u0645\\u0649\",\n \"\\uFD9C\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9D\", \"\\u064A\\u0645\\u0645\",\n \"\\uFD9E\", \"\\u0628\\u062E\\u064A\",\n \"\\uFD9F\", \"\\u062A\\u062C\\u064A\",\n \"\\uFDA0\", \"\\u062A\\u062C\\u0649\",\n \"\\uFDA1\", \"\\u062A\\u062E\\u064A\",\n \"\\uFDA2\", \"\\u062A\\u062E\\u0649\",\n \"\\uFDA3\", \"\\u062A\\u0645\\u064A\",\n \"\\uFDA4\", \"\\u062A\\u0645\\u0649\",\n \"\\uFDA5\", \"\\u062C\\u0645\\u064A\",\n \"\\uFDA6\", \"\\u062C\\u062D\\u0649\",\n \"\\uFDA7\", \"\\u062C\\u0645\\u0649\",\n \"\\uFDA8\", \"\\u0633\\u062E\\u0649\",\n \"\\uFDA9\", \"\\u0635\\u062D\\u064A\",\n \"\\uFDAA\", \"\\u0634\\u062D\\u064A\",\n \"\\uFDAB\", \"\\u0636\\u062D\\u064A\",\n \"\\uFDAC\", \"\\u0644\\u062C\\u064A\",\n \"\\uFDAD\", \"\\u0644\\u0645\\u064A\",\n \"\\uFDAE\", \"\\u064A\\u062D\\u064A\",\n \"\\uFDAF\", \"\\u064A\\u062C\\u064A\",\n \"\\uFDB0\", \"\\u064A\\u0645\\u064A\",\n \"\\uFDB1\", \"\\u0645\\u0645\\u064A\",\n \"\\uFDB2\", \"\\u0642\\u0645\\u064A\",\n \"\\uFDB3\", \"\\u0646\\u062D\\u064A\",\n \"\\uFDB4\", \"\\u0642\\u0645\\u062D\",\n \"\\uFDB5\", \"\\u0644\\u062D\\u0645\",\n \"\\uFDB6\", \"\\u0639\\u0645\\u064A\",\n \"\\uFDB7\", \"\\u0643\\u0645\\u064A\",\n \"\\uFDB8\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDB9\", \"\\u0645\\u062E\\u064A\",\n \"\\uFDBA\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBB\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDBC\", \"\\u0644\\u062C\\u0645\",\n \"\\uFDBD\", \"\\u0646\\u062C\\u062D\",\n \"\\uFDBE\", \"\\u062C\\u062D\\u064A\",\n \"\\uFDBF\", \"\\u062D\\u062C\\u064A\",\n \"\\uFDC0\", \"\\u0645\\u062C\\u064A\",\n \"\\uFDC1\", \"\\u0641\\u0645\\u064A\",\n \"\\uFDC2\", \"\\u0628\\u062D\\u064A\",\n \"\\uFDC3\", \"\\u0643\\u0645\\u0645\",\n \"\\uFDC4\", \"\\u0639\\u062C\\u0645\",\n \"\\uFDC5\", \"\\u0635\\u0645\\u0645\",\n \"\\uFDC6\", \"\\u0633\\u062E\\u064A\",\n \"\\uFDC7\", \"\\u0646\\u062C\\u064A\",\n \"\\uFE49\", \"\\u203E\",\n \"\\uFE4A\", \"\\u203E\",\n \"\\uFE4B\", \"\\u203E\",\n \"\\uFE4C\", \"\\u203E\",\n \"\\uFE4D\", \"\\u005F\",\n \"\\uFE4E\", \"\\u005F\",\n \"\\uFE4F\", \"\\u005F\",\n \"\\uFE80\", \"\\u0621\",\n \"\\uFE81\", \"\\u0622\",\n \"\\uFE82\", \"\\u0622\",\n \"\\uFE83\", \"\\u0623\",\n \"\\uFE84\", \"\\u0623\",\n \"\\uFE85\", \"\\u0624\",\n \"\\uFE86\", \"\\u0624\",\n \"\\uFE87\", \"\\u0625\",\n \"\\uFE88\", \"\\u0625\",\n \"\\uFE89\", \"\\u0626\",\n \"\\uFE8A\", \"\\u0626\",\n \"\\uFE8B\", \"\\u0626\",\n \"\\uFE8C\", \"\\u0626\",\n \"\\uFE8D\", \"\\u0627\",\n \"\\uFE8E\", \"\\u0627\",\n \"\\uFE8F\", \"\\u0628\",\n \"\\uFE90\", \"\\u0628\",\n \"\\uFE91\", \"\\u0628\",\n \"\\uFE92\", \"\\u0628\",\n \"\\uFE93\", \"\\u0629\",\n \"\\uFE94\", \"\\u0629\",\n \"\\uFE95\", \"\\u062A\",\n \"\\uFE96\", \"\\u062A\",\n \"\\uFE97\", \"\\u062A\",\n \"\\uFE98\", \"\\u062A\",\n \"\\uFE99\", \"\\u062B\",\n \"\\uFE9A\", \"\\u062B\",\n \"\\uFE9B\", \"\\u062B\",\n \"\\uFE9C\", \"\\u062B\",\n \"\\uFE9D\", \"\\u062C\",\n \"\\uFE9E\", \"\\u062C\",\n \"\\uFE9F\", \"\\u062C\",\n \"\\uFEA0\", \"\\u062C\",\n \"\\uFEA1\", \"\\u062D\",\n \"\\uFEA2\", \"\\u062D\",\n \"\\uFEA3\", \"\\u062D\",\n \"\\uFEA4\", \"\\u062D\",\n \"\\uFEA5\", \"\\u062E\",\n \"\\uFEA6\", \"\\u062E\",\n \"\\uFEA7\", \"\\u062E\",\n \"\\uFEA8\", \"\\u062E\",\n \"\\uFEA9\", \"\\u062F\",\n \"\\uFEAA\", \"\\u062F\",\n \"\\uFEAB\", \"\\u0630\",\n \"\\uFEAC\", \"\\u0630\",\n \"\\uFEAD\", \"\\u0631\",\n \"\\uFEAE\", \"\\u0631\",\n \"\\uFEAF\", \"\\u0632\",\n \"\\uFEB0\", \"\\u0632\",\n \"\\uFEB1\", \"\\u0633\",\n \"\\uFEB2\", \"\\u0633\",\n \"\\uFEB3\", \"\\u0633\",\n \"\\uFEB4\", \"\\u0633\",\n \"\\uFEB5\", \"\\u0634\",\n \"\\uFEB6\", \"\\u0634\",\n \"\\uFEB7\", \"\\u0634\",\n \"\\uFEB8\", \"\\u0634\",\n \"\\uFEB9\", \"\\u0635\",\n \"\\uFEBA\", \"\\u0635\",\n \"\\uFEBB\", \"\\u0635\",\n \"\\uFEBC\", \"\\u0635\",\n \"\\uFEBD\", \"\\u0636\",\n \"\\uFEBE\", \"\\u0636\",\n \"\\uFEBF\", \"\\u0636\",\n \"\\uFEC0\", \"\\u0636\",\n \"\\uFEC1\", \"\\u0637\",\n \"\\uFEC2\", \"\\u0637\",\n \"\\uFEC3\", \"\\u0637\",\n \"\\uFEC4\", \"\\u0637\",\n \"\\uFEC5\", \"\\u0638\",\n \"\\uFEC6\", \"\\u0638\",\n \"\\uFEC7\", \"\\u0638\",\n \"\\uFEC8\", \"\\u0638\",\n \"\\uFEC9\", \"\\u0639\",\n \"\\uFECA\", \"\\u0639\",\n \"\\uFECB\", \"\\u0639\",\n \"\\uFECC\", \"\\u0639\",\n \"\\uFECD\", \"\\u063A\",\n \"\\uFECE\", \"\\u063A\",\n \"\\uFECF\", \"\\u063A\",\n \"\\uFED0\", \"\\u063A\",\n \"\\uFED1\", \"\\u0641\",\n \"\\uFED2\", \"\\u0641\",\n \"\\uFED3\", \"\\u0641\",\n \"\\uFED4\", \"\\u0641\",\n \"\\uFED5\", \"\\u0642\",\n \"\\uFED6\", \"\\u0642\",\n \"\\uFED7\", \"\\u0642\",\n \"\\uFED8\", \"\\u0642\",\n \"\\uFED9\", \"\\u0643\",\n \"\\uFEDA\", \"\\u0643\",\n \"\\uFEDB\", \"\\u0643\",\n \"\\uFEDC\", \"\\u0643\",\n \"\\uFEDD\", \"\\u0644\",\n \"\\uFEDE\", \"\\u0644\",\n \"\\uFEDF\", \"\\u0644\",\n \"\\uFEE0\", \"\\u0644\",\n \"\\uFEE1\", \"\\u0645\",\n \"\\uFEE2\", \"\\u0645\",\n \"\\uFEE3\", \"\\u0645\",\n \"\\uFEE4\", \"\\u0645\",\n \"\\uFEE5\", \"\\u0646\",\n \"\\uFEE6\", \"\\u0646\",\n \"\\uFEE7\", \"\\u0646\",\n \"\\uFEE8\", \"\\u0646\",\n \"\\uFEE9\", \"\\u0647\",\n \"\\uFEEA\", \"\\u0647\",\n \"\\uFEEB\", \"\\u0647\",\n \"\\uFEEC\", \"\\u0647\",\n \"\\uFEED\", \"\\u0648\",\n \"\\uFEEE\", \"\\u0648\",\n \"\\uFEEF\", \"\\u0649\",\n \"\\uFEF0\", \"\\u0649\",\n \"\\uFEF1\", \"\\u064A\",\n \"\\uFEF2\", \"\\u064A\",\n \"\\uFEF3\", \"\\u064A\",\n \"\\uFEF4\", \"\\u064A\",\n \"\\uFEF5\", \"\\u0644\\u0622\",\n \"\\uFEF6\", \"\\u0644\\u0622\",\n \"\\uFEF7\", \"\\u0644\\u0623\",\n \"\\uFEF8\", \"\\u0644\\u0623\",\n \"\\uFEF9\", \"\\u0644\\u0625\",\n \"\\uFEFA\", \"\\u0644\\u0625\",\n \"\\uFEFB\", \"\\u0644\\u0627\",\n \"\\uFEFC\", \"\\u0644\\u0627\",\n ];\n});\n\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\n\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\n\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n isWhitespace: !!(groups && groups[1]),\n isZeroWidthDiacritic: !!(groups && groups[2]),\n isInvisibleFormatMark: !!(groups && groups[3]),\n };\n CategoryCache.set(char, category);\n return category;\n}\n\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\nexport {\n clearUnicodeCaches,\n getCharUnicodeCategory,\n getNormalizedUnicodes,\n getUnicodeForGlyph,\n getUnicodeRangeFor,\n mapSpecialUnicodeValues,\n reverseIfRtl,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nconst getStdFontMap = getLookupTableFactory(function (t) {\n // The standard 14 fonts:\n t[\"Times-Roman\"] = \"Times-Roman\";\n t.Helvetica = \"Helvetica\";\n t.Courier = \"Courier\";\n t.Symbol = \"Symbol\";\n t[\"Times-Bold\"] = \"Times-Bold\";\n t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n t[\"Courier-Bold\"] = \"Courier-Bold\";\n t.ZapfDingbats = \"ZapfDingbats\";\n t[\"Times-Italic\"] = \"Times-Italic\";\n t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n\n // Extra mappings\n t.ArialNarrow = \"Helvetica\";\n t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n t.ArialBlack = \"Helvetica\";\n t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n t[\"Arial-Black\"] = \"Helvetica\";\n t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n t.Arial = \"Helvetica\";\n t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n t.ArialMT = \"Helvetica\";\n t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n t.ArialUnicodeMS = \"Helvetica\";\n t[\"ArialUnicodeMS-Bold\"] = \"Helvetica-Bold\";\n t[\"ArialUnicodeMS-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ArialUnicodeMS-Italic\"] = \"Helvetica-Oblique\";\n t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"Courier-Italic\"] = \"Courier-Oblique\";\n t.CourierNew = \"Courier\";\n t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n t.CourierNewPSMT = \"Courier\";\n t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n t[\"Symbol-Bold\"] = \"Symbol\";\n t[\"Symbol-BoldItalic\"] = \"Symbol\";\n t[\"Symbol-Italic\"] = \"Symbol\";\n t.TimesNewRoman = \"Times-Roman\";\n t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n t.TimesNewRomanPS = \"Times-Roman\";\n t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n t.TimesNewRomanPSMT = \"Times-Roman\";\n t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\n\n// Contains mapping for standard fonts and xfa fonts.\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\n t.Courier = \"FoxitFixed.pfb\";\n t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n t.Helvetica = \"FoxitSans.pfb\";\n t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n t.Symbol = \"FoxitSymbol.pfb\";\n t.ZapfDingbats = \"FoxitDingbats.pfb\";\n t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\n t.Calibri = \"Helvetica\";\n t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n t.CenturyGothic = \"Helvetica\";\n t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n t.ComicSansMS = \"Comic Sans MS\";\n t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n t[\"ItcSymbol-Book\"] = \"Helvetica\";\n t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n t.LucidaConsole = \"Courier\";\n t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n t[\"MS-Gothic\"] = \"MS Gothic\";\n t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n t[\"MS-Mincho\"] = \"MS Mincho\";\n t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n t[\"MS-PGothic\"] = \"MS PGothic\";\n t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n t[\"MS-PMincho\"] = \"MS PMincho\";\n t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n t.NuptialScript = \"Times-Italic\";\n t.SegoeUISymbol = \"Helvetica\";\n t.Wingdings = \"ZapfDingbats\";\n t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\n\nconst getSerifFonts = getLookupTableFactory(function (t) {\n t[\"Adobe Jenson\"] = true;\n t[\"Adobe Text\"] = true;\n t.Albertus = true;\n t.Aldus = true;\n t.Alexandria = true;\n t.Algerian = true;\n t[\"American Typewriter\"] = true;\n t.Antiqua = true;\n t.Apex = true;\n t.Arno = true;\n t.Aster = true;\n t.Aurora = true;\n t.Baskerville = true;\n t.Bell = true;\n t.Bembo = true;\n t[\"Bembo Schoolbook\"] = true;\n t.Benguiat = true;\n t[\"Berkeley Old Style\"] = true;\n t[\"Bernhard Modern\"] = true;\n t[\"Berthold City\"] = true;\n t.Bodoni = true;\n t[\"Bauer Bodoni\"] = true;\n t[\"Book Antiqua\"] = true;\n t.Bookman = true;\n t[\"Bordeaux Roman\"] = true;\n t[\"Californian FB\"] = true;\n t.Calisto = true;\n t.Calvert = true;\n t.Capitals = true;\n t.Cambria = true;\n t.Cartier = true;\n t.Caslon = true;\n t.Catull = true;\n t.Centaur = true;\n t[\"Century Old Style\"] = true;\n t[\"Century Schoolbook\"] = true;\n t.Chaparral = true;\n t[\"Charis SIL\"] = true;\n t.Cheltenham = true;\n t[\"Cholla Slab\"] = true;\n t.Clarendon = true;\n t.Clearface = true;\n t.Cochin = true;\n t.Colonna = true;\n t[\"Computer Modern\"] = true;\n t[\"Concrete Roman\"] = true;\n t.Constantia = true;\n t[\"Cooper Black\"] = true;\n t.Corona = true;\n t.Ecotype = true;\n t.Egyptienne = true;\n t.Elephant = true;\n t.Excelsior = true;\n t.Fairfield = true;\n t[\"FF Scala\"] = true;\n t.Folkard = true;\n t.Footlight = true;\n t.FreeSerif = true;\n t[\"Friz Quadrata\"] = true;\n t.Garamond = true;\n t.Gentium = true;\n t.Georgia = true;\n t.Gloucester = true;\n t[\"Goudy Old Style\"] = true;\n t[\"Goudy Schoolbook\"] = true;\n t[\"Goudy Pro Font\"] = true;\n t.Granjon = true;\n t[\"Guardian Egyptian\"] = true;\n t.Heather = true;\n t.Hercules = true;\n t[\"High Tower Text\"] = true;\n t.Hiroshige = true;\n t[\"Hoefler Text\"] = true;\n t[\"Humana Serif\"] = true;\n t.Imprint = true;\n t[\"Ionic No. 5\"] = true;\n t.Janson = true;\n t.Joanna = true;\n t.Korinna = true;\n t.Lexicon = true;\n t.LiberationSerif = true;\n t[\"Liberation Serif\"] = true;\n t[\"Linux Libertine\"] = true;\n t.Literaturnaya = true;\n t.Lucida = true;\n t[\"Lucida Bright\"] = true;\n t.Melior = true;\n t.Memphis = true;\n t.Miller = true;\n t.Minion = true;\n t.Modern = true;\n t[\"Mona Lisa\"] = true;\n t[\"Mrs Eaves\"] = true;\n t[\"MS Serif\"] = true;\n t[\"Museo Slab\"] = true;\n t[\"New York\"] = true;\n t[\"Nimbus Roman\"] = true;\n t[\"NPS Rawlinson Roadway\"] = true;\n t.NuptialScript = true;\n t.Palatino = true;\n t.Perpetua = true;\n t.Plantin = true;\n t[\"Plantin Schoolbook\"] = true;\n t.Playbill = true;\n t[\"Poor Richard\"] = true;\n t[\"Rawlinson Roadway\"] = true;\n t.Renault = true;\n t.Requiem = true;\n t.Rockwell = true;\n t.Roman = true;\n t[\"Rotis Serif\"] = true;\n t.Sabon = true;\n t.Scala = true;\n t.Seagull = true;\n t.Sistina = true;\n t.Souvenir = true;\n t.STIX = true;\n t[\"Stone Informal\"] = true;\n t[\"Stone Serif\"] = true;\n t.Sylfaen = true;\n t.Times = true;\n t.Trajan = true;\n t[\"Trinité\"] = true;\n t[\"Trump Mediaeval\"] = true;\n t.Utopia = true;\n t[\"Vale Type\"] = true;\n t[\"Bitstream Vera\"] = true;\n t[\"Vera Serif\"] = true;\n t.Versailles = true;\n t.Wanted = true;\n t.Weiss = true;\n t[\"Wide Latin\"] = true;\n t.Windsor = true;\n t.XITS = true;\n});\n\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\n t.Dingbats = true;\n t.Symbol = true;\n t.ZapfDingbats = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10;\n t[3] = 32;\n t[4] = 33;\n t[5] = 34;\n t[6] = 35;\n t[7] = 36;\n t[8] = 37;\n t[9] = 38;\n t[10] = 39;\n t[11] = 40;\n t[12] = 41;\n t[13] = 42;\n t[14] = 43;\n t[15] = 44;\n t[16] = 45;\n t[17] = 46;\n t[18] = 47;\n t[19] = 48;\n t[20] = 49;\n t[21] = 50;\n t[22] = 51;\n t[23] = 52;\n t[24] = 53;\n t[25] = 54;\n t[26] = 55;\n t[27] = 56;\n t[28] = 57;\n t[29] = 58;\n t[30] = 894;\n t[31] = 60;\n t[32] = 61;\n t[33] = 62;\n t[34] = 63;\n t[35] = 64;\n t[36] = 65;\n t[37] = 66;\n t[38] = 67;\n t[39] = 68;\n t[40] = 69;\n t[41] = 70;\n t[42] = 71;\n t[43] = 72;\n t[44] = 73;\n t[45] = 74;\n t[46] = 75;\n t[47] = 76;\n t[48] = 77;\n t[49] = 78;\n t[50] = 79;\n t[51] = 80;\n t[52] = 81;\n t[53] = 82;\n t[54] = 83;\n t[55] = 84;\n t[56] = 85;\n t[57] = 86;\n t[58] = 87;\n t[59] = 88;\n t[60] = 89;\n t[61] = 90;\n t[62] = 91;\n t[63] = 92;\n t[64] = 93;\n t[65] = 94;\n t[66] = 95;\n t[67] = 96;\n t[68] = 97;\n t[69] = 98;\n t[70] = 99;\n t[71] = 100;\n t[72] = 101;\n t[73] = 102;\n t[74] = 103;\n t[75] = 104;\n t[76] = 105;\n t[77] = 106;\n t[78] = 107;\n t[79] = 108;\n t[80] = 109;\n t[81] = 110;\n t[82] = 111;\n t[83] = 112;\n t[84] = 113;\n t[85] = 114;\n t[86] = 115;\n t[87] = 116;\n t[88] = 117;\n t[89] = 118;\n t[90] = 119;\n t[91] = 120;\n t[92] = 121;\n t[93] = 122;\n t[94] = 123;\n t[95] = 124;\n t[96] = 125;\n t[97] = 126;\n t[98] = 196;\n t[99] = 197;\n t[100] = 199;\n t[101] = 201;\n t[102] = 209;\n t[103] = 214;\n t[104] = 220;\n t[105] = 225;\n t[106] = 224;\n t[107] = 226;\n t[108] = 228;\n t[109] = 227;\n t[110] = 229;\n t[111] = 231;\n t[112] = 233;\n t[113] = 232;\n t[114] = 234;\n t[115] = 235;\n t[116] = 237;\n t[117] = 236;\n t[118] = 238;\n t[119] = 239;\n t[120] = 241;\n t[121] = 243;\n t[122] = 242;\n t[123] = 244;\n t[124] = 246;\n t[125] = 245;\n t[126] = 250;\n t[127] = 249;\n t[128] = 251;\n t[129] = 252;\n t[130] = 8224;\n t[131] = 176;\n t[132] = 162;\n t[133] = 163;\n t[134] = 167;\n t[135] = 8226;\n t[136] = 182;\n t[137] = 223;\n t[138] = 174;\n t[139] = 169;\n t[140] = 8482;\n t[141] = 180;\n t[142] = 168;\n t[143] = 8800;\n t[144] = 198;\n t[145] = 216;\n t[146] = 8734;\n t[147] = 177;\n t[148] = 8804;\n t[149] = 8805;\n t[150] = 165;\n t[151] = 181;\n t[152] = 8706;\n t[153] = 8721;\n t[154] = 8719;\n t[156] = 8747;\n t[157] = 170;\n t[158] = 186;\n t[159] = 8486;\n t[160] = 230;\n t[161] = 248;\n t[162] = 191;\n t[163] = 161;\n t[164] = 172;\n t[165] = 8730;\n t[166] = 402;\n t[167] = 8776;\n t[168] = 8710;\n t[169] = 171;\n t[170] = 187;\n t[171] = 8230;\n t[179] = 8220;\n t[180] = 8221;\n t[181] = 8216;\n t[182] = 8217;\n t[200] = 193;\n t[203] = 205;\n t[210] = 218;\n t[223] = 711;\n t[224] = 321;\n t[225] = 322;\n t[226] = 352;\n t[227] = 353;\n t[228] = 381;\n t[229] = 382;\n t[233] = 221;\n t[234] = 253;\n t[252] = 263;\n t[253] = 268;\n t[254] = 269;\n t[258] = 258;\n t[260] = 260;\n t[261] = 261;\n t[265] = 280;\n t[266] = 281;\n t[267] = 282;\n t[268] = 283;\n t[269] = 313;\n t[275] = 323;\n t[276] = 324;\n t[278] = 328;\n t[283] = 344;\n t[284] = 345;\n t[285] = 346;\n t[286] = 347;\n t[292] = 367;\n t[295] = 377;\n t[296] = 378;\n t[298] = 380;\n t[305] = 963;\n t[306] = 964;\n t[307] = 966;\n t[308] = 8215;\n t[309] = 8252;\n t[310] = 8319;\n t[311] = 8359;\n t[312] = 8592;\n t[313] = 8593;\n t[337] = 9552;\n t[493] = 1039;\n t[494] = 1040;\n t[672] = 1488;\n t[673] = 1489;\n t[674] = 1490;\n t[675] = 1491;\n t[676] = 1492;\n t[677] = 1493;\n t[678] = 1494;\n t[679] = 1495;\n t[680] = 1496;\n t[681] = 1497;\n t[682] = 1498;\n t[683] = 1499;\n t[684] = 1500;\n t[685] = 1501;\n t[686] = 1502;\n t[687] = 1503;\n t[688] = 1504;\n t[689] = 1505;\n t[690] = 1506;\n t[691] = 1507;\n t[692] = 1508;\n t[693] = 1509;\n t[694] = 1510;\n t[695] = 1511;\n t[696] = 1512;\n t[697] = 1513;\n t[698] = 1514;\n t[705] = 1524;\n t[706] = 8362;\n t[710] = 64288;\n t[711] = 64298;\n t[759] = 1617;\n t[761] = 1776;\n t[763] = 1778;\n t[775] = 1652;\n t[777] = 1764;\n t[778] = 1780;\n t[779] = 1781;\n t[780] = 1782;\n t[782] = 771;\n t[783] = 64726;\n t[786] = 8363;\n t[788] = 8532;\n t[790] = 768;\n t[791] = 769;\n t[792] = 768;\n t[795] = 803;\n t[797] = 64336;\n t[798] = 64337;\n t[799] = 64342;\n t[800] = 64343;\n t[801] = 64344;\n t[802] = 64345;\n t[803] = 64362;\n t[804] = 64363;\n t[805] = 64364;\n t[2424] = 7821;\n t[2425] = 7822;\n t[2426] = 7823;\n t[2427] = 7824;\n t[2428] = 7825;\n t[2429] = 7826;\n t[2430] = 7827;\n t[2433] = 7682;\n t[2678] = 8045;\n t[2679] = 8046;\n t[2830] = 1552;\n t[2838] = 686;\n t[2840] = 751;\n t[2842] = 753;\n t[2843] = 754;\n t[2844] = 755;\n t[2846] = 757;\n t[2856] = 767;\n t[2857] = 848;\n t[2858] = 849;\n t[2862] = 853;\n t[2863] = 854;\n t[2864] = 855;\n t[2865] = 861;\n t[2866] = 862;\n t[2906] = 7460;\n t[2908] = 7462;\n t[2909] = 7463;\n t[2910] = 7464;\n t[2912] = 7466;\n t[2913] = 7467;\n t[2914] = 7468;\n t[2916] = 7470;\n t[2917] = 7471;\n t[2918] = 7472;\n t[2920] = 7474;\n t[2921] = 7475;\n t[2922] = 7476;\n t[2924] = 7478;\n t[2925] = 7479;\n t[2926] = 7480;\n t[2928] = 7482;\n t[2929] = 7483;\n t[2930] = 7484;\n t[2932] = 7486;\n t[2933] = 7487;\n t[2934] = 7488;\n t[2936] = 7490;\n t[2937] = 7491;\n t[2938] = 7492;\n t[2940] = 7494;\n t[2941] = 7495;\n t[2942] = 7496;\n t[2944] = 7498;\n t[2946] = 7500;\n t[2948] = 7502;\n t[2950] = 7504;\n t[2951] = 7505;\n t[2952] = 7506;\n t[2954] = 7508;\n t[2955] = 7509;\n t[2956] = 7510;\n t[2958] = 7512;\n t[2959] = 7513;\n t[2960] = 7514;\n t[2962] = 7516;\n t[2963] = 7517;\n t[2964] = 7518;\n t[2966] = 7520;\n t[2967] = 7521;\n t[2968] = 7522;\n t[2970] = 7524;\n t[2971] = 7525;\n t[2972] = 7526;\n t[2974] = 7528;\n t[2975] = 7529;\n t[2976] = 7530;\n t[2978] = 1537;\n t[2979] = 1538;\n t[2980] = 1539;\n t[2982] = 1549;\n t[2983] = 1551;\n t[2984] = 1552;\n t[2986] = 1554;\n t[2987] = 1555;\n t[2988] = 1556;\n t[2990] = 1623;\n t[2991] = 1624;\n t[2995] = 1775;\n t[2999] = 1791;\n t[3002] = 64290;\n t[3003] = 64291;\n t[3004] = 64292;\n t[3006] = 64294;\n t[3007] = 64295;\n t[3008] = 64296;\n t[3011] = 1900;\n t[3014] = 8223;\n t[3015] = 8244;\n t[3017] = 7532;\n t[3018] = 7533;\n t[3019] = 7534;\n t[3075] = 7590;\n t[3076] = 7591;\n t[3079] = 7594;\n t[3080] = 7595;\n t[3083] = 7598;\n t[3084] = 7599;\n t[3087] = 7602;\n t[3088] = 7603;\n t[3091] = 7606;\n t[3092] = 7607;\n t[3095] = 7610;\n t[3096] = 7611;\n t[3099] = 7614;\n t[3100] = 7615;\n t[3103] = 7618;\n t[3104] = 7619;\n t[3107] = 8337;\n t[3108] = 8338;\n t[3116] = 1884;\n t[3119] = 1885;\n t[3120] = 1885;\n t[3123] = 1886;\n t[3124] = 1886;\n t[3127] = 1887;\n t[3128] = 1887;\n t[3131] = 1888;\n t[3132] = 1888;\n t[3135] = 1889;\n t[3136] = 1889;\n t[3139] = 1890;\n t[3140] = 1890;\n t[3143] = 1891;\n t[3144] = 1891;\n t[3147] = 1892;\n t[3148] = 1892;\n t[3153] = 580;\n t[3154] = 581;\n t[3157] = 584;\n t[3158] = 585;\n t[3161] = 588;\n t[3162] = 589;\n t[3165] = 891;\n t[3166] = 892;\n t[3169] = 1274;\n t[3170] = 1275;\n t[3173] = 1278;\n t[3174] = 1279;\n t[3181] = 7622;\n t[3182] = 7623;\n t[3282] = 11799;\n t[3316] = 578;\n t[3379] = 42785;\n t[3393] = 1159;\n t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(function (\n t\n) {\n t[227] = 322;\n t[264] = 261;\n t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\n t[1] = 32;\n t[4] = 65;\n t[5] = 192;\n t[6] = 193;\n t[9] = 196;\n t[17] = 66;\n t[18] = 67;\n t[21] = 268;\n t[24] = 68;\n t[28] = 69;\n t[29] = 200;\n t[30] = 201;\n t[32] = 282;\n t[38] = 70;\n t[39] = 71;\n t[44] = 72;\n t[47] = 73;\n t[48] = 204;\n t[49] = 205;\n t[58] = 74;\n t[60] = 75;\n t[62] = 76;\n t[68] = 77;\n t[69] = 78;\n t[75] = 79;\n t[76] = 210;\n t[80] = 214;\n t[87] = 80;\n t[89] = 81;\n t[90] = 82;\n t[92] = 344;\n t[94] = 83;\n t[97] = 352;\n t[100] = 84;\n t[104] = 85;\n t[109] = 220;\n t[115] = 86;\n t[116] = 87;\n t[121] = 88;\n t[122] = 89;\n t[124] = 221;\n t[127] = 90;\n t[129] = 381;\n t[258] = 97;\n t[259] = 224;\n t[260] = 225;\n t[263] = 228;\n t[268] = 261;\n t[271] = 98;\n t[272] = 99;\n t[273] = 263;\n t[275] = 269;\n t[282] = 100;\n t[286] = 101;\n t[287] = 232;\n t[288] = 233;\n t[290] = 283;\n t[295] = 281;\n t[296] = 102;\n t[336] = 103;\n t[346] = 104;\n t[349] = 105;\n t[350] = 236;\n t[351] = 237;\n t[361] = 106;\n t[364] = 107;\n t[367] = 108;\n t[371] = 322;\n t[373] = 109;\n t[374] = 110;\n t[381] = 111;\n t[382] = 242;\n t[383] = 243;\n t[386] = 246;\n t[393] = 112;\n t[395] = 113;\n t[396] = 114;\n t[398] = 345;\n t[400] = 115;\n t[401] = 347;\n t[403] = 353;\n t[410] = 116;\n t[437] = 117;\n t[442] = 252;\n t[448] = 118;\n t[449] = 119;\n t[454] = 120;\n t[455] = 121;\n t[457] = 253;\n t[460] = 122;\n t[462] = 382;\n t[463] = 380;\n t[853] = 44;\n t[855] = 58;\n t[856] = 46;\n t[876] = 47;\n t[878] = 45;\n t[882] = 45;\n t[894] = 40;\n t[895] = 41;\n t[896] = 91;\n t[897] = 93;\n t[923] = 64;\n t[1004] = 48;\n t[1005] = 49;\n t[1006] = 50;\n t[1007] = 51;\n t[1008] = 52;\n t[1009] = 53;\n t[1010] = 54;\n t[1011] = 55;\n t[1012] = 56;\n t[1013] = 57;\n t[1081] = 37;\n t[1085] = 43;\n t[1086] = 45;\n});\n\nfunction getStandardFontName(name) {\n const fontName = normalizeFontName(name);\n const stdFontMap = getStdFontMap();\n return stdFontMap[fontName];\n}\n\nexport {\n getFontNameToFileMap,\n getGlyphMapForStandardFonts,\n getNonStdFontMap,\n getSerifFonts,\n getStandardFontName,\n getStdFontMap,\n getSupplementalGlyphMapForArialBlack,\n getSupplementalGlyphMapForCalibri,\n getSymbolsFonts,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass ToUnicodeMap {\n constructor(cmap = []) {\n // The elements of this._map can be integers or strings, depending on how\n // `cmap` was created.\n this._map = cmap;\n }\n\n get length() {\n return this._map.length;\n }\n\n forEach(callback) {\n for (const charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n }\n\n has(i) {\n return this._map[i] !== undefined;\n }\n\n get(i) {\n return this._map[i];\n }\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n const map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (const charCode in map) {\n if (map[charCode] === value) {\n return charCode | 0;\n }\n }\n return -1;\n }\n\n amend(map) {\n for (const charCode in map) {\n this._map[charCode] = map[charCode];\n }\n }\n}\n\nclass IdentityToUnicodeMap {\n constructor(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n get length() {\n return this.lastChar + 1 - this.firstChar;\n }\n\n forEach(callback) {\n for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n }\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n }\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n }\n\n charCodeOf(v) {\n return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar\n ? v\n : -1;\n }\n\n amend(map) {\n unreachable(\"Should not call amend()\");\n }\n}\n\nexport { IdentityToUnicodeMap, ToUnicodeMap };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CFFCompiler, CFFParser } from \"./cff_parser.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nclass CFFFont {\n constructor(file, properties) {\n this.properties = properties;\n\n const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n this.cff.duplicateFirstGlyph();\n const compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (e) {\n warn(\"Failed to compile font \" + properties.loadedName);\n // There may have just been an issue with the compiler, set the data\n // anyway and hope the font loaded.\n this.data = file;\n }\n this._createBuiltInEncoding();\n }\n\n get numGlyphs() {\n return this.cff.charStrings.count;\n }\n\n getCharset() {\n return this.cff.charset.charset;\n }\n\n getGlyphMapping() {\n const cff = this.cff;\n const properties = this.properties;\n const { cidToGidMap, cMap } = properties;\n const charsets = cff.charset.charset;\n let charCodeToGlyphId;\n let glyphId;\n\n if (properties.composite) {\n let invCidToGidMap;\n if (cidToGidMap && cidToGidMap.length > 0) {\n invCidToGidMap = Object.create(null);\n for (let i = 0, ii = cidToGidMap.length; i < ii; i++) {\n const gid = cidToGidMap[i];\n if (gid !== undefined) {\n invCidToGidMap[gid] = i;\n }\n }\n }\n\n charCodeToGlyphId = Object.create(null);\n let charCode;\n if (cff.isCIDFont) {\n // If the font is actually a CID font then we should use the charset\n // to map CIDs to GIDs.\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n const cid = charsets[glyphId];\n charCode = cMap.charCodeOf(cid);\n\n if (invCidToGidMap && invCidToGidMap[charCode] !== undefined) {\n // According to the PDF specification, see Table 117, it's not clear\n // that a /CIDToGIDMap should be used with any non-TrueType fonts,\n // however it's necessary to do so in order to fix issue 15559.\n //\n // It seems, in the CFF-case, that the /CIDToGIDMap needs to be used\n // \"inverted\" compared to the TrueType-case. Here it thus seem to be\n // a charCode mapping, rather than the normal CID to GID mapping.\n charCode = invCidToGidMap[charCode];\n }\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n // If it is NOT actually a CID font then CIDs should be mapped\n // directly to GIDs.\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCode = cMap.charCodeOf(glyphId);\n charCodeToGlyphId[charCode] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n\n let encoding = cff.encoding ? cff.encoding.encoding : null;\n if (properties.isInternalFont) {\n encoding = properties.defaultEncoding;\n }\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n }\n\n hasGlyphId(id) {\n return this.cff.hasGlyphId(id);\n }\n\n /**\n * @private\n */\n _createBuiltInEncoding() {\n const { charset, encoding } = this.cff;\n if (!charset || !encoding) {\n return;\n }\n const charsets = charset.charset,\n encodings = encoding.encoding;\n const map = [];\n\n for (const charCode in encodings) {\n const glyphId = encodings[charCode];\n if (glyphId >= 0) {\n const glyphName = charsets[glyphId];\n if (glyphName) {\n map[charCode] = glyphName;\n }\n }\n }\n if (map.length > 0) {\n this.properties.builtInEncoding = map;\n }\n }\n}\n\nexport { CFFFont };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FONT_IDENTITY_MATRIX,\n FormatError,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { CFFParser } from \"./cff_parser.js\";\nimport { getGlyphsUnicode } from \"./glyphlist.js\";\nimport { StandardEncoding } from \"./encodings.js\";\nimport { Stream } from \"./stream.js\";\n\n// TODO: use DataView and its methods.\n\nfunction getUint32(data, offset) {\n return (\n ((data[offset] << 24) |\n (data[offset + 1] << 16) |\n (data[offset + 2] << 8) |\n data[offset + 3]) >>>\n 0\n );\n}\n\nfunction getUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction getInt16(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16;\n}\n\nfunction getInt8(data, offset) {\n return (data[offset] << 24) >> 24;\n}\n\nfunction getFloat214(data, offset) {\n return getInt16(data, offset) / 16384;\n}\n\nfunction getSubroutineBias(subrs) {\n const numSubrs = subrs.length;\n let bias = 32768;\n if (numSubrs < 1240) {\n bias = 107;\n } else if (numSubrs < 33900) {\n bias = 1131;\n }\n return bias;\n}\n\nfunction parseCmap(data, start, end) {\n const offset =\n getUint16(data, start + 2) === 1\n ? getUint32(data, start + 8)\n : getUint32(data, start + 16);\n const format = getUint16(data, start + offset);\n let ranges, p, i;\n if (format === 4) {\n getUint16(data, start + offset + 2); // length\n const segCount = getUint16(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = { end: getUint16(data, p) };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUint16(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n let idOffset = getUint16(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUint16(data, p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n const groups = getUint32(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n start = getUint32(data, p);\n ranges.push({\n start,\n end: getUint32(data, p + 4),\n idDelta: getUint32(data, p + 8) - start,\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n const properties = {};\n const parser = new CFFParser(\n new Stream(data, start, end - start),\n properties,\n seacAnalysisEnabled\n );\n const cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs:\n cff.topDict.privateDict &&\n cff.topDict.privateDict.subrsIndex &&\n cff.topDict.privateDict.subrsIndex.objects,\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n isCFFCIDFont: cff.isCIDFont,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n let itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = getUint32;\n } else {\n itemSize = 2;\n itemDecode = (data, offset) => 2 * getUint16(data, offset);\n }\n const glyphs = [];\n let startOffset = itemDecode(loca, 0);\n for (let j = itemSize; j < loca.length; j += itemSize) {\n const endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n const code = unicode.codePointAt(0);\n let gid = 0,\n l = 0,\n r = ranges.length - 1;\n while (l < r) {\n const c = (l + r + 1) >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid =\n (ranges[l].idDelta +\n (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\n 0xffff;\n }\n return {\n charCode: code,\n glyphId: gid,\n };\n}\n\nfunction compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({ cmd: \"quadraticCurveTo\", args: [xa, ya, x, y] });\n }\n\n let i = 0;\n const numberOfContours = getInt16(code, i);\n let flags;\n let x = 0,\n y = 0;\n i += 10;\n if (numberOfContours < 0) {\n // composite glyph\n do {\n flags = getUint16(code, i);\n const glyphIndex = getUint16(code, i + 2);\n i += 4;\n let arg1, arg2;\n if (flags & 0x01) {\n if (flags & 0x02) {\n arg1 = getInt16(code, i);\n arg2 = getInt16(code, i + 2);\n } else {\n arg1 = getUint16(code, i);\n arg2 = getUint16(code, i + 2);\n }\n i += 4;\n } else {\n if (flags & 0x02) {\n arg1 = getInt8(code, i++);\n arg2 = getInt8(code, i++);\n } else {\n arg1 = code[i++];\n arg2 = code[i++];\n }\n }\n if (flags & 0x02) {\n x = arg1;\n y = arg2;\n } else {\n x = 0;\n y = 0;\n }\n let scaleX = 1,\n scaleY = 1,\n scale01 = 0,\n scale10 = 0;\n if (flags & 0x08) {\n scaleX = scaleY = getFloat214(code, i);\n i += 2;\n } else if (flags & 0x40) {\n scaleX = getFloat214(code, i);\n scaleY = getFloat214(code, i + 2);\n i += 4;\n } else if (flags & 0x80) {\n scaleX = getFloat214(code, i);\n scale01 = getFloat214(code, i + 2);\n scale10 = getFloat214(code, i + 4);\n scaleY = getFloat214(code, i + 6);\n i += 8;\n }\n const subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n // TODO: the transform should be applied only if there is a scale:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1205\n cmds.push(\n { cmd: \"save\" },\n {\n cmd: \"transform\",\n args: [scaleX, scale01, scale10, scaleY, x, y],\n }\n );\n\n if (!(flags & 0x02)) {\n // TODO: we must use arg1 and arg2 to make something similar to:\n // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1209\n }\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: \"restore\" });\n }\n } while (flags & 0x20);\n } else {\n // simple glyph\n const endPtsOfContours = [];\n let j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push(getUint16(code, i));\n i += 2;\n }\n const instructionLength = getUint16(code, i);\n i += 2 + instructionLength; // skipping the instructions\n const numberOfPoints = endPtsOfContours.at(-1) + 1;\n const points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n let repeat = 1;\n if (flags & 0x08) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({ flags });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += getInt16(code, i);\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += getInt16(code, i);\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n\n let startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n const endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n const contour = points.slice(startPoint, endPoint + 1);\n if (contour[0].flags & 1) {\n contour.push(contour[0]); // using start point at the contour end\n } else if (contour.at(-1).flags & 1) {\n // first is off-curve point, trying to use one from the end\n contour.unshift(contour.at(-1));\n } else {\n // start and end are off-curve points, creating implicit one\n const p = {\n flags: 1,\n x: (contour[0].x + contour.at(-1).x) / 2,\n y: (contour[0].y + contour.at(-1).y) / 2,\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if (contour[j].flags & 1) {\n lineTo(contour[j].x, contour[j].y);\n } else if (contour[j + 1].flags & 1) {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n contour[j + 1].x,\n contour[j + 1].y\n );\n j++;\n } else {\n quadraticCurveTo(\n contour[j].x,\n contour[j].y,\n (contour[j].x + contour[j + 1].x) / 2,\n (contour[j].y + contour[j + 1].y) / 2\n );\n }\n }\n startPoint = endPoint + 1;\n }\n }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n function moveTo(x, y) {\n cmds.push({ cmd: \"moveTo\", args: [x, y] });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: \"lineTo\", args: [x, y] });\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({ cmd: \"bezierCurveTo\", args: [x1, y1, x2, y2, x, y] });\n }\n\n const stack = [];\n let x = 0,\n y = 0;\n let stems = 0;\n\n function parse(code) {\n let i = 0;\n while (i < code.length) {\n let stackClean = false;\n let v = code[i++];\n let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1: // hstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3: // vstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4: // vmoveto\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10: // callsubr\n n = stack.pop();\n subrCode = null;\n if (font.isCFFCIDFont) {\n const fdIndex = font.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n const fontDict = font.fdArray[fdIndex];\n let subrs;\n if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n subrs = fontDict.privateDict.subrsIndex.objects;\n }\n if (subrs) {\n // Add subroutine bias.\n n += getSubroutineBias(subrs);\n subrCode = subrs[n];\n }\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n } else {\n subrCode = font.subrs[n + font.subrsBias];\n }\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11: // return\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34: // flex\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35: // flex\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop(); // fd\n break;\n case 36: // hflex1\n xa = x + stack.shift();\n y1 = y + stack.shift();\n xb = xa + stack.shift();\n y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37: // flex1\n const x0 = x,\n y0 = y;\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14: // endchar\n if (stack.length >= 4) {\n const achar = stack.pop();\n const bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: \"save\" }, { cmd: \"translate\", args: [x, y] });\n let cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n cmds.push({ cmd: \"restore\" });\n\n cmap = lookupCmap(\n font.cmap,\n String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\n );\n compileCharString(\n font.glyphs[cmap.glyphId],\n cmds,\n font,\n cmap.glyphId\n );\n }\n return;\n case 18: // hstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19: // hintmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 20: // cntrmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 21: // rmoveto\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22: // hmoveto\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23: // vstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift();\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb;\n y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n xa = x + stack.shift();\n ya = y;\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x;\n ya = y + stack.shift();\n xb = xa + stack.shift();\n yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(\n ((code[i] << 24) |\n (code[i + 1] << 16) |\n (code[i + 2] << 8) |\n code[i + 3]) /\n 65536\n );\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n constructor(fontMatrix) {\n if (this.constructor === CompiledFont) {\n unreachable(\"Cannot initialize CompiledFont.\");\n }\n this.fontMatrix = fontMatrix;\n\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n }\n\n getPathJs(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n let fn = this.compiledGlyphs[glyphId];\n if (!fn) {\n try {\n fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n this.compiledGlyphs[glyphId] = fn;\n } catch (ex) {\n // Avoid attempting to re-compile a corrupt glyph.\n this.compiledGlyphs[glyphId] = NOOP;\n\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n throw ex;\n }\n }\n if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n this.compiledCharCodeToGlyphId[charCode] = glyphId;\n }\n return fn;\n }\n\n compileGlyph(code, glyphId) {\n if (!code || code.length === 0 || code[0] === 14) {\n return NOOP;\n }\n\n let fontMatrix = this.fontMatrix;\n if (this.isCFFCIDFont) {\n // Top DICT's FontMatrix can be ignored because CFFCompiler always\n // removes it and copies to FDArray DICTs.\n const fdIndex = this.fdSelect.getFDIndex(glyphId);\n if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n const fontDict = this.fdArray[fdIndex];\n fontMatrix = fontDict.getByName(\"FontMatrix\") || FONT_IDENTITY_MATRIX;\n } else {\n warn(\"Invalid fd index for glyph index.\");\n }\n }\n\n const cmds = [\n { cmd: \"save\" },\n { cmd: \"transform\", args: fontMatrix.slice() },\n { cmd: \"scale\", args: [\"size\", \"-size\"] },\n ];\n this.compileGlyphImpl(code, cmds, glyphId);\n\n cmds.push({ cmd: \"restore\" });\n\n return cmds;\n }\n\n compileGlyphImpl() {\n unreachable(\"Children classes should implement this.\");\n }\n\n hasBuiltPath(unicode) {\n const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\n return (\n this.compiledGlyphs[glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[charCode] !== undefined\n );\n }\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n constructor(glyphs, cmap, fontMatrix) {\n super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n }\n}\n\nclass Type2Compiled extends CompiledFont {\n constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n this.gsubrsBias = getSubroutineBias(this.gsubrs);\n this.subrsBias = getSubroutineBias(this.subrs);\n\n this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n this.fdSelect = cffInfo.fdSelect;\n this.fdArray = cffInfo.fdArray;\n }\n\n compileGlyphImpl(code, cmds, glyphId) {\n compileCharString(code, cmds, this, glyphId);\n }\n}\n\nclass FontRendererFactory {\n static create(font, seacAnalysisEnabled) {\n const data = new Uint8Array(font.data);\n let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n const numTables = getUint16(data, 4);\n for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n const tag = bytesToString(data.subarray(p, p + 4));\n const offset = getUint32(data, p + 8);\n const length = getUint32(data, p + 12);\n switch (tag) {\n case \"cmap\":\n cmap = parseCmap(data, offset, offset + length);\n break;\n case \"glyf\":\n glyf = data.subarray(offset, offset + length);\n break;\n case \"loca\":\n loca = data.subarray(offset, offset + length);\n break;\n case \"head\":\n unitsPerEm = getUint16(data, offset + 18);\n indexToLocFormat = getUint16(data, offset + 50);\n break;\n case \"CFF \":\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n const fontMatrix = !unitsPerEm\n ? font.fontMatrix\n : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n return new TrueTypeCompiled(\n parseGlyfTable(glyf, loca, indexToLocFormat),\n cmap,\n fontMatrix\n );\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n }\n}\n\nexport { FontRendererFactory };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from \"./core_utils.js\";\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nconst getMetrics = getLookupTableFactory(function (t) {\n t.Courier = 600;\n t[\"Courier-Bold\"] = 600;\n t[\"Courier-BoldOblique\"] = 600;\n t[\"Courier-Oblique\"] = 600;\n // eslint-disable-next-line no-shadow\n t.Helvetica = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-BoldOblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 333;\n t.quotedbl = 474;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 722;\n t.quoteright = 278;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 611;\n t.at = 975;\n t.A = 722;\n t.B = 722;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 556;\n t.K = 722;\n t.L = 611;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 584;\n t.underscore = 556;\n t.quoteleft = 278;\n t.a = 556;\n t.b = 611;\n t.c = 556;\n t.d = 611;\n t.e = 556;\n t.f = 333;\n t.g = 611;\n t.h = 611;\n t.i = 278;\n t.j = 278;\n t.k = 556;\n t.l = 278;\n t.m = 889;\n t.n = 611;\n t.o = 611;\n t.p = 611;\n t.q = 611;\n t.r = 389;\n t.s = 556;\n t.t = 333;\n t.u = 611;\n t.v = 556;\n t.w = 778;\n t.x = 556;\n t.y = 556;\n t.z = 500;\n t.braceleft = 389;\n t.bar = 280;\n t.braceright = 389;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 238;\n t.quotedblleft = 500;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 611;\n t.fl = 611;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 556;\n t.bullet = 350;\n t.quotesinglbase = 278;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 611;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 611;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 722;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 556;\n t.scommaaccent = 556;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 611;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 556;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 556;\n t.scedilla = 556;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 611;\n t.acircumflex = 556;\n t.Amacron = 722;\n t.rcaron = 389;\n t.ccedilla = 556;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 743;\n t.Umacron = 722;\n t.uring = 611;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 584;\n t.uacute = 611;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 556;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 556;\n t.nacute = 611;\n t.umacron = 611;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 280;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 611;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 389;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 611;\n t.amacron = 556;\n t.sacute = 556;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 611;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 611;\n t.igrave = 278;\n t.ohungarumlaut = 611;\n t.Eogonek = 667;\n t.dcroat = 611;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 400;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 611;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 611;\n t.ntilde = 611;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 611;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 611;\n t.Ccaron = 722;\n t.ugrave = 611;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 611;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 556;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 611;\n t.tcommaaccent = 333;\n t.logicalnot = 584;\n t.odieresis = 611;\n t.udieresis = 611;\n t.notequal = 549;\n t.gcommaaccent = 611;\n t.eth = 611;\n t.zcaron = 500;\n t.ncommaaccent = 611;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t[\"Helvetica-Oblique\"] = getLookupTableFactory(function (t) {\n t.space = 278;\n t.exclam = 278;\n t.quotedbl = 355;\n t.numbersign = 556;\n t.dollar = 556;\n t.percent = 889;\n t.ampersand = 667;\n t.quoteright = 222;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 389;\n t.plus = 584;\n t.comma = 278;\n t.hyphen = 333;\n t.period = 278;\n t.slash = 278;\n t.zero = 556;\n t.one = 556;\n t.two = 556;\n t.three = 556;\n t.four = 556;\n t.five = 556;\n t.six = 556;\n t.seven = 556;\n t.eight = 556;\n t.nine = 556;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 584;\n t.equal = 584;\n t.greater = 584;\n t.question = 556;\n t.at = 1015;\n t.A = 667;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 722;\n t.I = 278;\n t.J = 500;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 722;\n t.O = 778;\n t.P = 667;\n t.Q = 778;\n t.R = 722;\n t.S = 667;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 944;\n t.X = 667;\n t.Y = 667;\n t.Z = 611;\n t.bracketleft = 278;\n t.backslash = 278;\n t.bracketright = 278;\n t.asciicircum = 469;\n t.underscore = 556;\n t.quoteleft = 222;\n t.a = 556;\n t.b = 556;\n t.c = 500;\n t.d = 556;\n t.e = 556;\n t.f = 278;\n t.g = 556;\n t.h = 556;\n t.i = 222;\n t.j = 222;\n t.k = 500;\n t.l = 222;\n t.m = 833;\n t.n = 556;\n t.o = 556;\n t.p = 556;\n t.q = 556;\n t.r = 333;\n t.s = 500;\n t.t = 278;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 500;\n t.braceleft = 334;\n t.bar = 260;\n t.braceright = 334;\n t.asciitilde = 584;\n t.exclamdown = 333;\n t.cent = 556;\n t.sterling = 556;\n t.fraction = 167;\n t.yen = 556;\n t.florin = 556;\n t.section = 556;\n t.currency = 556;\n t.quotesingle = 191;\n t.quotedblleft = 333;\n t.guillemotleft = 556;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 556;\n t.dagger = 556;\n t.daggerdbl = 556;\n t.periodcentered = 278;\n t.paragraph = 537;\n t.bullet = 350;\n t.quotesinglbase = 222;\n t.quotedblbase = 333;\n t.quotedblright = 333;\n t.guillemotright = 556;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 611;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 370;\n t.Lslash = 556;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 365;\n t.ae = 889;\n t.dotlessi = 278;\n t.lslash = 222;\n t.oslash = 611;\n t.oe = 944;\n t.germandbls = 611;\n t.Idieresis = 278;\n t.eacute = 556;\n t.abreve = 556;\n t.uhungarumlaut = 556;\n t.ecaron = 556;\n t.Ydieresis = 667;\n t.divide = 584;\n t.Yacute = 667;\n t.Acircumflex = 667;\n t.aacute = 556;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 500;\n t.ecircumflex = 556;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 556;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 737;\n t.Emacron = 667;\n t.ccaron = 500;\n t.aring = 556;\n t.Ncommaaccent = 722;\n t.lacute = 222;\n t.agrave = 556;\n t.Tcommaaccent = 611;\n t.Cacute = 722;\n t.atilde = 556;\n t.Edotaccent = 667;\n t.scaron = 500;\n t.scedilla = 500;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 556;\n t.Amacron = 667;\n t.rcaron = 333;\n t.ccedilla = 500;\n t.Zdotaccent = 611;\n t.Thorn = 667;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 667;\n t.dcaron = 643;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 333;\n t.Ograve = 778;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 584;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 556;\n t.edieresis = 556;\n t.cacute = 500;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 278;\n t.plusminus = 584;\n t.brokenbar = 260;\n t.registered = 737;\n t.Gbreve = 778;\n t.Idotaccent = 278;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 333;\n t.omacron = 556;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 222;\n t.tcaron = 317;\n t.eogonek = 556;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 556;\n t.zacute = 500;\n t.iogonek = 222;\n t.Oacute = 778;\n t.oacute = 556;\n t.amacron = 556;\n t.sacute = 500;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 333;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 556;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 834;\n t.Scedilla = 667;\n t.lcaron = 299;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 1000;\n t.edotaccent = 556;\n t.Igrave = 278;\n t.Imacron = 278;\n t.Lcaron = 556;\n t.onehalf = 834;\n t.lessequal = 549;\n t.ocircumflex = 556;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 556;\n t.gbreve = 556;\n t.onequarter = 834;\n t.Scaron = 667;\n t.Scommaaccent = 667;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 556;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 556;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 556;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 778;\n t.zdotaccent = 500;\n t.Ecaron = 667;\n t.Iogonek = 278;\n t.kcommaaccent = 500;\n t.minus = 584;\n t.Icircumflex = 278;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 584;\n t.odieresis = 556;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 556;\n t.eth = 556;\n t.zcaron = 500;\n t.ncommaaccent = 556;\n t.onesuperior = 333;\n t.imacron = 278;\n t.Euro = 556;\n });\n // eslint-disable-next-line no-shadow\n t.Symbol = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.universal = 713;\n t.numbersign = 500;\n t.existential = 549;\n t.percent = 833;\n t.ampersand = 778;\n t.suchthat = 439;\n t.parenleft = 333;\n t.parenright = 333;\n t.asteriskmath = 500;\n t.plus = 549;\n t.comma = 250;\n t.minus = 549;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 549;\n t.equal = 549;\n t.greater = 549;\n t.question = 444;\n t.congruent = 549;\n t.Alpha = 722;\n t.Beta = 667;\n t.Chi = 722;\n t.Delta = 612;\n t.Epsilon = 611;\n t.Phi = 763;\n t.Gamma = 603;\n t.Eta = 722;\n t.Iota = 333;\n t.theta1 = 631;\n t.Kappa = 722;\n t.Lambda = 686;\n t.Mu = 889;\n t.Nu = 722;\n t.Omicron = 722;\n t.Pi = 768;\n t.Theta = 741;\n t.Rho = 556;\n t.Sigma = 592;\n t.Tau = 611;\n t.Upsilon = 690;\n t.sigma1 = 439;\n t.Omega = 768;\n t.Xi = 645;\n t.Psi = 795;\n t.Zeta = 611;\n t.bracketleft = 333;\n t.therefore = 863;\n t.bracketright = 333;\n t.perpendicular = 658;\n t.underscore = 500;\n t.radicalex = 500;\n t.alpha = 631;\n t.beta = 549;\n t.chi = 549;\n t.delta = 494;\n t.epsilon = 439;\n t.phi = 521;\n t.gamma = 411;\n t.eta = 603;\n t.iota = 329;\n t.phi1 = 603;\n t.kappa = 549;\n t.lambda = 549;\n t.mu = 576;\n t.nu = 521;\n t.omicron = 549;\n t.pi = 549;\n t.theta = 521;\n t.rho = 549;\n t.sigma = 603;\n t.tau = 439;\n t.upsilon = 576;\n t.omega1 = 713;\n t.omega = 686;\n t.xi = 493;\n t.psi = 686;\n t.zeta = 494;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.similar = 549;\n t.Euro = 750;\n t.Upsilon1 = 620;\n t.minute = 247;\n t.lessequal = 549;\n t.fraction = 167;\n t.infinity = 713;\n t.florin = 500;\n t.club = 753;\n t.diamond = 753;\n t.heart = 753;\n t.spade = 753;\n t.arrowboth = 1042;\n t.arrowleft = 987;\n t.arrowup = 603;\n t.arrowright = 987;\n t.arrowdown = 603;\n t.degree = 400;\n t.plusminus = 549;\n t.second = 411;\n t.greaterequal = 549;\n t.multiply = 549;\n t.proportional = 713;\n t.partialdiff = 494;\n t.bullet = 460;\n t.divide = 549;\n t.notequal = 549;\n t.equivalence = 549;\n t.approxequal = 549;\n t.ellipsis = 1000;\n t.arrowvertex = 603;\n t.arrowhorizex = 1000;\n t.carriagereturn = 658;\n t.aleph = 823;\n t.Ifraktur = 686;\n t.Rfraktur = 795;\n t.weierstrass = 987;\n t.circlemultiply = 768;\n t.circleplus = 768;\n t.emptyset = 823;\n t.intersection = 768;\n t.union = 768;\n t.propersuperset = 713;\n t.reflexsuperset = 713;\n t.notsubset = 713;\n t.propersubset = 713;\n t.reflexsubset = 713;\n t.element = 713;\n t.notelement = 713;\n t.angle = 768;\n t.gradient = 713;\n t.registerserif = 790;\n t.copyrightserif = 790;\n t.trademarkserif = 890;\n t.product = 823;\n t.radical = 549;\n t.dotmath = 250;\n t.logicalnot = 713;\n t.logicaland = 603;\n t.logicalor = 603;\n t.arrowdblboth = 1042;\n t.arrowdblleft = 987;\n t.arrowdblup = 603;\n t.arrowdblright = 987;\n t.arrowdbldown = 603;\n t.lozenge = 494;\n t.angleleft = 329;\n t.registersans = 790;\n t.copyrightsans = 790;\n t.trademarksans = 786;\n t.summation = 713;\n t.parenlefttp = 384;\n t.parenleftex = 384;\n t.parenleftbt = 384;\n t.bracketlefttp = 384;\n t.bracketleftex = 384;\n t.bracketleftbt = 384;\n t.bracelefttp = 494;\n t.braceleftmid = 494;\n t.braceleftbt = 494;\n t.braceex = 494;\n t.angleright = 329;\n t.integral = 274;\n t.integraltp = 686;\n t.integralex = 686;\n t.integralbt = 686;\n t.parenrighttp = 384;\n t.parenrightex = 384;\n t.parenrightbt = 384;\n t.bracketrighttp = 384;\n t.bracketrightex = 384;\n t.bracketrightbt = 384;\n t.bracerighttp = 494;\n t.bracerightmid = 494;\n t.bracerightbt = 494;\n t.apple = 790;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Roman\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 408;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 564;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 278;\n t.semicolon = 278;\n t.less = 564;\n t.equal = 564;\n t.greater = 564;\n t.question = 444;\n t.at = 921;\n t.A = 722;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 556;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 389;\n t.K = 722;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 556;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 722;\n t.W = 944;\n t.X = 722;\n t.Y = 722;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 469;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 444;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 333;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 480;\n t.bar = 200;\n t.braceright = 480;\n t.asciitilde = 541;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 180;\n t.quotedblleft = 444;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 453;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 444;\n t.quotedblright = 444;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 444;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 889;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 444;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 564;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 444;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 444;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 444;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 444;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 444;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 444;\n t.Amacron = 722;\n t.rcaron = 333;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 556;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 588;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 564;\n t.uacute = 500;\n t.Tcaron = 611;\n t.partialdiff = 476;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 444;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 722;\n t.Iacute = 333;\n t.plusminus = 564;\n t.brokenbar = 200;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 333;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 326;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 444;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 344;\n t.Kcommaaccent = 722;\n t.Lacute = 611;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 333;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 722;\n t.zdotaccent = 444;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 500;\n t.minus = 564;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 564;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Bold\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 1000;\n t.ampersand = 833;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 930;\n t.A = 722;\n t.B = 667;\n t.C = 722;\n t.D = 722;\n t.E = 667;\n t.F = 611;\n t.G = 778;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 778;\n t.L = 667;\n t.M = 944;\n t.N = 722;\n t.O = 778;\n t.P = 611;\n t.Q = 778;\n t.R = 722;\n t.S = 556;\n t.T = 667;\n t.U = 722;\n t.V = 722;\n t.W = 1000;\n t.X = 722;\n t.Y = 722;\n t.Z = 667;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 581;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 556;\n t.c = 444;\n t.d = 556;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 333;\n t.k = 556;\n t.l = 278;\n t.m = 833;\n t.n = 556;\n t.o = 500;\n t.p = 556;\n t.q = 556;\n t.r = 444;\n t.s = 389;\n t.t = 333;\n t.u = 556;\n t.v = 500;\n t.w = 722;\n t.x = 500;\n t.y = 500;\n t.z = 444;\n t.braceleft = 394;\n t.bar = 220;\n t.braceright = 394;\n t.asciitilde = 520;\n t.exclamdown = 333;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 540;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 1000;\n t.ordfeminine = 300;\n t.Lslash = 667;\n t.Oslash = 778;\n t.OE = 1000;\n t.ordmasculine = 330;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 556;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 722;\n t.divide = 570;\n t.Yacute = 722;\n t.Acircumflex = 722;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 500;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 667;\n t.Cacute = 722;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 722;\n t.Gcommaaccent = 778;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 722;\n t.rcaron = 444;\n t.ccedilla = 444;\n t.Zdotaccent = 667;\n t.Thorn = 611;\n t.Omacron = 778;\n t.Racute = 722;\n t.Sacute = 556;\n t.dcaron = 672;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 778;\n t.Agrave = 722;\n t.Abreve = 722;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 667;\n t.partialdiff = 494;\n t.ydieresis = 500;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 778;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 444;\n t.omacron = 500;\n t.Zacute = 667;\n t.Zcaron = 667;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 722;\n t.lcommaaccent = 278;\n t.tcaron = 416;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 722;\n t.Adieresis = 722;\n t.egrave = 444;\n t.zacute = 444;\n t.iogonek = 278;\n t.Oacute = 778;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 778;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 556;\n t.twosuperior = 300;\n t.Odieresis = 778;\n t.mu = 556;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 556;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 394;\n t.Kcommaaccent = 778;\n t.Lacute = 667;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 667;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 778;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 722;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 444;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 722;\n t.Lcommaaccent = 667;\n t.Atilde = 722;\n t.Aogonek = 722;\n t.Aring = 722;\n t.Otilde = 778;\n t.zdotaccent = 444;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 556;\n t.minus = 570;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 333;\n t.logicalnot = 570;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 444;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-BoldItalic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 389;\n t.quotedbl = 555;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 570;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 570;\n t.equal = 570;\n t.greater = 570;\n t.question = 500;\n t.at = 832;\n t.A = 667;\n t.B = 667;\n t.C = 667;\n t.D = 722;\n t.E = 667;\n t.F = 667;\n t.G = 722;\n t.H = 778;\n t.I = 389;\n t.J = 500;\n t.K = 667;\n t.L = 611;\n t.M = 889;\n t.N = 722;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 667;\n t.S = 556;\n t.T = 611;\n t.U = 722;\n t.V = 667;\n t.W = 889;\n t.X = 667;\n t.Y = 611;\n t.Z = 611;\n t.bracketleft = 333;\n t.backslash = 278;\n t.bracketright = 333;\n t.asciicircum = 570;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 333;\n t.g = 500;\n t.h = 556;\n t.i = 278;\n t.j = 278;\n t.k = 500;\n t.l = 278;\n t.m = 778;\n t.n = 556;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 556;\n t.v = 444;\n t.w = 667;\n t.x = 500;\n t.y = 444;\n t.z = 389;\n t.braceleft = 348;\n t.bar = 220;\n t.braceright = 348;\n t.asciitilde = 570;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 278;\n t.quotedblleft = 500;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 556;\n t.fl = 556;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 500;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 500;\n t.quotedblright = 500;\n t.guillemotright = 500;\n t.ellipsis = 1000;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 1000;\n t.AE = 944;\n t.ordfeminine = 266;\n t.Lslash = 611;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 300;\n t.ae = 722;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 722;\n t.germandbls = 500;\n t.Idieresis = 389;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 556;\n t.ecaron = 444;\n t.Ydieresis = 611;\n t.divide = 570;\n t.Yacute = 611;\n t.Acircumflex = 667;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 556;\n t.Edieresis = 667;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 747;\n t.Emacron = 667;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 722;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 611;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 667;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 494;\n t.Rcaron = 667;\n t.Gcommaaccent = 722;\n t.ucircumflex = 556;\n t.acircumflex = 500;\n t.Amacron = 667;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 611;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 667;\n t.Sacute = 556;\n t.dcaron = 608;\n t.Umacron = 722;\n t.uring = 556;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 667;\n t.Abreve = 667;\n t.multiply = 570;\n t.uacute = 556;\n t.Tcaron = 611;\n t.partialdiff = 494;\n t.ydieresis = 444;\n t.Nacute = 722;\n t.icircumflex = 278;\n t.Ecircumflex = 667;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 556;\n t.umacron = 556;\n t.Ncaron = 722;\n t.Iacute = 389;\n t.plusminus = 570;\n t.brokenbar = 220;\n t.registered = 747;\n t.Gbreve = 722;\n t.Idotaccent = 389;\n t.summation = 600;\n t.Egrave = 667;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 611;\n t.Zcaron = 611;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 366;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 667;\n t.Adieresis = 667;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 576;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 667;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 556;\n t.lcaron = 382;\n t.Kcommaaccent = 667;\n t.Lacute = 611;\n t.trademark = 1000;\n t.edotaccent = 444;\n t.Igrave = 389;\n t.Imacron = 389;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 556;\n t.Uhungarumlaut = 722;\n t.Eacute = 667;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 556;\n t.Scommaaccent = 556;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 556;\n t.radical = 549;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 722;\n t.otilde = 500;\n t.Rcommaaccent = 667;\n t.Lcommaaccent = 611;\n t.Atilde = 667;\n t.Aogonek = 667;\n t.Aring = 667;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 667;\n t.Iogonek = 389;\n t.kcommaaccent = 500;\n t.minus = 606;\n t.Icircumflex = 389;\n t.ncaron = 556;\n t.tcommaaccent = 278;\n t.logicalnot = 606;\n t.odieresis = 500;\n t.udieresis = 556;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 556;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t[\"Times-Italic\"] = getLookupTableFactory(function (t) {\n t.space = 250;\n t.exclam = 333;\n t.quotedbl = 420;\n t.numbersign = 500;\n t.dollar = 500;\n t.percent = 833;\n t.ampersand = 778;\n t.quoteright = 333;\n t.parenleft = 333;\n t.parenright = 333;\n t.asterisk = 500;\n t.plus = 675;\n t.comma = 250;\n t.hyphen = 333;\n t.period = 250;\n t.slash = 278;\n t.zero = 500;\n t.one = 500;\n t.two = 500;\n t.three = 500;\n t.four = 500;\n t.five = 500;\n t.six = 500;\n t.seven = 500;\n t.eight = 500;\n t.nine = 500;\n t.colon = 333;\n t.semicolon = 333;\n t.less = 675;\n t.equal = 675;\n t.greater = 675;\n t.question = 500;\n t.at = 920;\n t.A = 611;\n t.B = 611;\n t.C = 667;\n t.D = 722;\n t.E = 611;\n t.F = 611;\n t.G = 722;\n t.H = 722;\n t.I = 333;\n t.J = 444;\n t.K = 667;\n t.L = 556;\n t.M = 833;\n t.N = 667;\n t.O = 722;\n t.P = 611;\n t.Q = 722;\n t.R = 611;\n t.S = 500;\n t.T = 556;\n t.U = 722;\n t.V = 611;\n t.W = 833;\n t.X = 611;\n t.Y = 556;\n t.Z = 556;\n t.bracketleft = 389;\n t.backslash = 278;\n t.bracketright = 389;\n t.asciicircum = 422;\n t.underscore = 500;\n t.quoteleft = 333;\n t.a = 500;\n t.b = 500;\n t.c = 444;\n t.d = 500;\n t.e = 444;\n t.f = 278;\n t.g = 500;\n t.h = 500;\n t.i = 278;\n t.j = 278;\n t.k = 444;\n t.l = 278;\n t.m = 722;\n t.n = 500;\n t.o = 500;\n t.p = 500;\n t.q = 500;\n t.r = 389;\n t.s = 389;\n t.t = 278;\n t.u = 500;\n t.v = 444;\n t.w = 667;\n t.x = 444;\n t.y = 444;\n t.z = 389;\n t.braceleft = 400;\n t.bar = 275;\n t.braceright = 400;\n t.asciitilde = 541;\n t.exclamdown = 389;\n t.cent = 500;\n t.sterling = 500;\n t.fraction = 167;\n t.yen = 500;\n t.florin = 500;\n t.section = 500;\n t.currency = 500;\n t.quotesingle = 214;\n t.quotedblleft = 556;\n t.guillemotleft = 500;\n t.guilsinglleft = 333;\n t.guilsinglright = 333;\n t.fi = 500;\n t.fl = 500;\n t.endash = 500;\n t.dagger = 500;\n t.daggerdbl = 500;\n t.periodcentered = 250;\n t.paragraph = 523;\n t.bullet = 350;\n t.quotesinglbase = 333;\n t.quotedblbase = 556;\n t.quotedblright = 556;\n t.guillemotright = 500;\n t.ellipsis = 889;\n t.perthousand = 1000;\n t.questiondown = 500;\n t.grave = 333;\n t.acute = 333;\n t.circumflex = 333;\n t.tilde = 333;\n t.macron = 333;\n t.breve = 333;\n t.dotaccent = 333;\n t.dieresis = 333;\n t.ring = 333;\n t.cedilla = 333;\n t.hungarumlaut = 333;\n t.ogonek = 333;\n t.caron = 333;\n t.emdash = 889;\n t.AE = 889;\n t.ordfeminine = 276;\n t.Lslash = 556;\n t.Oslash = 722;\n t.OE = 944;\n t.ordmasculine = 310;\n t.ae = 667;\n t.dotlessi = 278;\n t.lslash = 278;\n t.oslash = 500;\n t.oe = 667;\n t.germandbls = 500;\n t.Idieresis = 333;\n t.eacute = 444;\n t.abreve = 500;\n t.uhungarumlaut = 500;\n t.ecaron = 444;\n t.Ydieresis = 556;\n t.divide = 675;\n t.Yacute = 556;\n t.Acircumflex = 611;\n t.aacute = 500;\n t.Ucircumflex = 722;\n t.yacute = 444;\n t.scommaaccent = 389;\n t.ecircumflex = 444;\n t.Uring = 722;\n t.Udieresis = 722;\n t.aogonek = 500;\n t.Uacute = 722;\n t.uogonek = 500;\n t.Edieresis = 611;\n t.Dcroat = 722;\n t.commaaccent = 250;\n t.copyright = 760;\n t.Emacron = 611;\n t.ccaron = 444;\n t.aring = 500;\n t.Ncommaaccent = 667;\n t.lacute = 278;\n t.agrave = 500;\n t.Tcommaaccent = 556;\n t.Cacute = 667;\n t.atilde = 500;\n t.Edotaccent = 611;\n t.scaron = 389;\n t.scedilla = 389;\n t.iacute = 278;\n t.lozenge = 471;\n t.Rcaron = 611;\n t.Gcommaaccent = 722;\n t.ucircumflex = 500;\n t.acircumflex = 500;\n t.Amacron = 611;\n t.rcaron = 389;\n t.ccedilla = 444;\n t.Zdotaccent = 556;\n t.Thorn = 611;\n t.Omacron = 722;\n t.Racute = 611;\n t.Sacute = 500;\n t.dcaron = 544;\n t.Umacron = 722;\n t.uring = 500;\n t.threesuperior = 300;\n t.Ograve = 722;\n t.Agrave = 611;\n t.Abreve = 611;\n t.multiply = 675;\n t.uacute = 500;\n t.Tcaron = 556;\n t.partialdiff = 476;\n t.ydieresis = 444;\n t.Nacute = 667;\n t.icircumflex = 278;\n t.Ecircumflex = 611;\n t.adieresis = 500;\n t.edieresis = 444;\n t.cacute = 444;\n t.nacute = 500;\n t.umacron = 500;\n t.Ncaron = 667;\n t.Iacute = 333;\n t.plusminus = 675;\n t.brokenbar = 275;\n t.registered = 760;\n t.Gbreve = 722;\n t.Idotaccent = 333;\n t.summation = 600;\n t.Egrave = 611;\n t.racute = 389;\n t.omacron = 500;\n t.Zacute = 556;\n t.Zcaron = 556;\n t.greaterequal = 549;\n t.Eth = 722;\n t.Ccedilla = 667;\n t.lcommaaccent = 278;\n t.tcaron = 300;\n t.eogonek = 444;\n t.Uogonek = 722;\n t.Aacute = 611;\n t.Adieresis = 611;\n t.egrave = 444;\n t.zacute = 389;\n t.iogonek = 278;\n t.Oacute = 722;\n t.oacute = 500;\n t.amacron = 500;\n t.sacute = 389;\n t.idieresis = 278;\n t.Ocircumflex = 722;\n t.Ugrave = 722;\n t.Delta = 612;\n t.thorn = 500;\n t.twosuperior = 300;\n t.Odieresis = 722;\n t.mu = 500;\n t.igrave = 278;\n t.ohungarumlaut = 500;\n t.Eogonek = 611;\n t.dcroat = 500;\n t.threequarters = 750;\n t.Scedilla = 500;\n t.lcaron = 300;\n t.Kcommaaccent = 667;\n t.Lacute = 556;\n t.trademark = 980;\n t.edotaccent = 444;\n t.Igrave = 333;\n t.Imacron = 333;\n t.Lcaron = 611;\n t.onehalf = 750;\n t.lessequal = 549;\n t.ocircumflex = 500;\n t.ntilde = 500;\n t.Uhungarumlaut = 722;\n t.Eacute = 611;\n t.emacron = 444;\n t.gbreve = 500;\n t.onequarter = 750;\n t.Scaron = 500;\n t.Scommaaccent = 500;\n t.Ohungarumlaut = 722;\n t.degree = 400;\n t.ograve = 500;\n t.Ccaron = 667;\n t.ugrave = 500;\n t.radical = 453;\n t.Dcaron = 722;\n t.rcommaaccent = 389;\n t.Ntilde = 667;\n t.otilde = 500;\n t.Rcommaaccent = 611;\n t.Lcommaaccent = 556;\n t.Atilde = 611;\n t.Aogonek = 611;\n t.Aring = 611;\n t.Otilde = 722;\n t.zdotaccent = 389;\n t.Ecaron = 611;\n t.Iogonek = 333;\n t.kcommaaccent = 444;\n t.minus = 675;\n t.Icircumflex = 333;\n t.ncaron = 500;\n t.tcommaaccent = 278;\n t.logicalnot = 675;\n t.odieresis = 500;\n t.udieresis = 500;\n t.notequal = 549;\n t.gcommaaccent = 500;\n t.eth = 500;\n t.zcaron = 389;\n t.ncommaaccent = 500;\n t.onesuperior = 300;\n t.imacron = 278;\n t.Euro = 500;\n });\n // eslint-disable-next-line no-shadow\n t.ZapfDingbats = getLookupTableFactory(function (t) {\n t.space = 278;\n t.a1 = 974;\n t.a2 = 961;\n t.a202 = 974;\n t.a3 = 980;\n t.a4 = 719;\n t.a5 = 789;\n t.a119 = 790;\n t.a118 = 791;\n t.a117 = 690;\n t.a11 = 960;\n t.a12 = 939;\n t.a13 = 549;\n t.a14 = 855;\n t.a15 = 911;\n t.a16 = 933;\n t.a105 = 911;\n t.a17 = 945;\n t.a18 = 974;\n t.a19 = 755;\n t.a20 = 846;\n t.a21 = 762;\n t.a22 = 761;\n t.a23 = 571;\n t.a24 = 677;\n t.a25 = 763;\n t.a26 = 760;\n t.a27 = 759;\n t.a28 = 754;\n t.a6 = 494;\n t.a7 = 552;\n t.a8 = 537;\n t.a9 = 577;\n t.a10 = 692;\n t.a29 = 786;\n t.a30 = 788;\n t.a31 = 788;\n t.a32 = 790;\n t.a33 = 793;\n t.a34 = 794;\n t.a35 = 816;\n t.a36 = 823;\n t.a37 = 789;\n t.a38 = 841;\n t.a39 = 823;\n t.a40 = 833;\n t.a41 = 816;\n t.a42 = 831;\n t.a43 = 923;\n t.a44 = 744;\n t.a45 = 723;\n t.a46 = 749;\n t.a47 = 790;\n t.a48 = 792;\n t.a49 = 695;\n t.a50 = 776;\n t.a51 = 768;\n t.a52 = 792;\n t.a53 = 759;\n t.a54 = 707;\n t.a55 = 708;\n t.a56 = 682;\n t.a57 = 701;\n t.a58 = 826;\n t.a59 = 815;\n t.a60 = 789;\n t.a61 = 789;\n t.a62 = 707;\n t.a63 = 687;\n t.a64 = 696;\n t.a65 = 689;\n t.a66 = 786;\n t.a67 = 787;\n t.a68 = 713;\n t.a69 = 791;\n t.a70 = 785;\n t.a71 = 791;\n t.a72 = 873;\n t.a73 = 761;\n t.a74 = 762;\n t.a203 = 762;\n t.a75 = 759;\n t.a204 = 759;\n t.a76 = 892;\n t.a77 = 892;\n t.a78 = 788;\n t.a79 = 784;\n t.a81 = 438;\n t.a82 = 138;\n t.a83 = 277;\n t.a84 = 415;\n t.a97 = 392;\n t.a98 = 392;\n t.a99 = 668;\n t.a100 = 668;\n t.a89 = 390;\n t.a90 = 390;\n t.a93 = 317;\n t.a94 = 317;\n t.a91 = 276;\n t.a92 = 276;\n t.a205 = 509;\n t.a85 = 509;\n t.a206 = 410;\n t.a86 = 410;\n t.a87 = 234;\n t.a88 = 234;\n t.a95 = 334;\n t.a96 = 334;\n t.a101 = 732;\n t.a102 = 544;\n t.a103 = 544;\n t.a104 = 910;\n t.a106 = 667;\n t.a107 = 760;\n t.a108 = 760;\n t.a112 = 776;\n t.a111 = 595;\n t.a110 = 694;\n t.a109 = 626;\n t.a120 = 788;\n t.a121 = 788;\n t.a122 = 788;\n t.a123 = 788;\n t.a124 = 788;\n t.a125 = 788;\n t.a126 = 788;\n t.a127 = 788;\n t.a128 = 788;\n t.a129 = 788;\n t.a130 = 788;\n t.a131 = 788;\n t.a132 = 788;\n t.a133 = 788;\n t.a134 = 788;\n t.a135 = 788;\n t.a136 = 788;\n t.a137 = 788;\n t.a138 = 788;\n t.a139 = 788;\n t.a140 = 788;\n t.a141 = 788;\n t.a142 = 788;\n t.a143 = 788;\n t.a144 = 788;\n t.a145 = 788;\n t.a146 = 788;\n t.a147 = 788;\n t.a148 = 788;\n t.a149 = 788;\n t.a150 = 788;\n t.a151 = 788;\n t.a152 = 788;\n t.a153 = 788;\n t.a154 = 788;\n t.a155 = 788;\n t.a156 = 788;\n t.a157 = 788;\n t.a158 = 788;\n t.a159 = 788;\n t.a160 = 894;\n t.a161 = 838;\n t.a163 = 1016;\n t.a164 = 458;\n t.a196 = 748;\n t.a165 = 924;\n t.a192 = 748;\n t.a166 = 918;\n t.a167 = 927;\n t.a168 = 928;\n t.a169 = 928;\n t.a170 = 834;\n t.a171 = 873;\n t.a172 = 828;\n t.a173 = 924;\n t.a162 = 924;\n t.a174 = 917;\n t.a175 = 930;\n t.a176 = 931;\n t.a177 = 463;\n t.a178 = 883;\n t.a179 = 836;\n t.a193 = 836;\n t.a180 = 867;\n t.a199 = 867;\n t.a181 = 696;\n t.a200 = 696;\n t.a182 = 874;\n t.a201 = 874;\n t.a183 = 760;\n t.a184 = 946;\n t.a197 = 771;\n t.a185 = 865;\n t.a194 = 771;\n t.a198 = 888;\n t.a186 = 967;\n t.a195 = 888;\n t.a187 = 831;\n t.a188 = 873;\n t.a189 = 927;\n t.a190 = 970;\n t.a191 = 918;\n });\n});\n\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\n t.Courier = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: -426,\n };\n t[\"Courier-Bold\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 439,\n };\n t[\"Courier-Oblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t[\"Courier-BoldOblique\"] = {\n ascent: 629,\n descent: -157,\n capHeight: 562,\n xHeight: 426,\n };\n t.Helvetica = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-Bold\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Helvetica-Oblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 523,\n };\n t[\"Helvetica-BoldOblique\"] = {\n ascent: 718,\n descent: -207,\n capHeight: 718,\n xHeight: 532,\n };\n t[\"Times-Roman\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 662,\n xHeight: 450,\n };\n t[\"Times-Bold\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 676,\n xHeight: 461,\n };\n t[\"Times-Italic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 653,\n xHeight: 441,\n };\n t[\"Times-BoldItalic\"] = {\n ascent: 683,\n descent: -217,\n capHeight: 669,\n xHeight: 462,\n };\n t.Symbol = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n t.ZapfDingbats = {\n ascent: Math.NaN,\n descent: Math.NaN,\n capHeight: Math.NaN,\n xHeight: Math.NaN,\n };\n});\n\nexport { getFontBasicMetrics, getMetrics };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\n\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\n// const ROUND_XY_TO_GRID = 1 << 2;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n// const USE_MY_METRICS = 1 << 9;\n// const OVERLAP_COMPOUND = 1 << 10;\n// const SCALED_COMPONENT_OFFSET = 1 << 11;\n// const UNSCALED_COMPONENT_OFFSET = 1 << 12;\n\n/**\n * GlyfTable object represents a glyf table containing glyph information:\n * - glyph header (xMin, yMin, xMax, yMax);\n * - contours if any;\n * - components if the glyph is a composite.\n *\n * It's possible to re-scale each glyph in order to have a new font which\n * exactly fits an other one: the goal is to be able to build some substitution\n * font for well-known fonts (Myriad, Arial, ...).\n *\n * A full description of glyf table can be found here\n * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html\n */\nclass GlyfTable {\n constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\n this.glyphs = [];\n const loca = new DataView(\n locaTable.buffer,\n locaTable.byteOffset,\n locaTable.byteLength\n );\n const glyf = new DataView(\n glyfTable.buffer,\n glyfTable.byteOffset,\n glyfTable.byteLength\n );\n const offsetSize = isGlyphLocationsLong ? 4 : 2;\n let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n let pos = 0;\n for (let i = 0; i < numGlyphs; i++) {\n pos += offsetSize;\n const next = isGlyphLocationsLong\n ? loca.getUint32(pos)\n : 2 * loca.getUint16(pos);\n if (next === prev) {\n this.glyphs.push(new Glyph({}));\n continue;\n }\n\n const glyph = Glyph.parse(prev, glyf);\n this.glyphs.push(glyph);\n\n prev = next;\n }\n }\n\n getSize() {\n return this.glyphs.reduce((a, g) => {\n const size = g.getSize();\n // Round to next multiple of 4 if needed.\n return a + ((size + 3) & ~3);\n }, 0);\n }\n\n write() {\n const totalSize = this.getSize();\n const glyfTable = new DataView(new ArrayBuffer(totalSize));\n const isLocationLong = totalSize > /* 0xffff * 2 */ 0x1fffe;\n const offsetSize = isLocationLong ? 4 : 2;\n const locaTable = new DataView(\n new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\n );\n\n if (isLocationLong) {\n locaTable.setUint32(0, 0);\n } else {\n locaTable.setUint16(0, 0);\n }\n\n let pos = 0;\n let locaIndex = 0;\n for (const glyph of this.glyphs) {\n pos += glyph.write(pos, glyfTable);\n // Round to next multiple of 4 if needed.\n pos = (pos + 3) & ~3;\n\n locaIndex += offsetSize;\n if (isLocationLong) {\n locaTable.setUint32(locaIndex, pos);\n } else {\n locaTable.setUint16(locaIndex, pos >> 1);\n }\n }\n\n return {\n isLocationLong,\n loca: new Uint8Array(locaTable.buffer),\n glyf: new Uint8Array(glyfTable.buffer),\n };\n }\n\n scale(factors) {\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n this.glyphs[i].scale(factors[i]);\n }\n }\n}\n\nclass Glyph {\n constructor({ header = null, simple = null, composites = null }) {\n this.header = header;\n this.simple = simple;\n this.composites = composites;\n }\n\n static parse(pos, glyf) {\n const [read, header] = GlyphHeader.parse(pos, glyf);\n pos += read;\n\n if (header.numberOfContours < 0) {\n // Composite glyph.\n const composites = [];\n while (true) {\n const [n, composite] = CompositeGlyph.parse(pos, glyf);\n pos += n;\n composites.push(composite);\n if (!(composite.flags & MORE_COMPONENTS)) {\n break;\n }\n }\n\n return new Glyph({ header, composites });\n }\n\n const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n\n return new Glyph({ header, simple });\n }\n\n getSize() {\n if (!this.header) {\n return 0;\n }\n const size = this.simple\n ? this.simple.getSize()\n : this.composites.reduce((a, c) => a + c.getSize(), 0);\n return this.header.getSize() + size;\n }\n\n write(pos, buf) {\n if (!this.header) {\n return 0;\n }\n\n const spos = pos;\n pos += this.header.write(pos, buf);\n if (this.simple) {\n pos += this.simple.write(pos, buf);\n } else {\n for (const composite of this.composites) {\n pos += composite.write(pos, buf);\n }\n }\n\n return pos - spos;\n }\n\n scale(factor) {\n if (!this.header) {\n return;\n }\n\n const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n this.header.scale(xMiddle, factor);\n if (this.simple) {\n this.simple.scale(xMiddle, factor);\n } else {\n for (const composite of this.composites) {\n composite.scale(xMiddle, factor);\n }\n }\n }\n}\n\nclass GlyphHeader {\n constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n }\n\n static parse(pos, glyf) {\n return [\n 10,\n new GlyphHeader({\n numberOfContours: glyf.getInt16(pos),\n xMin: glyf.getInt16(pos + 2),\n yMin: glyf.getInt16(pos + 4),\n xMax: glyf.getInt16(pos + 6),\n yMax: glyf.getInt16(pos + 8),\n }),\n ];\n }\n\n getSize() {\n return 10;\n }\n\n write(pos, buf) {\n buf.setInt16(pos, this.numberOfContours);\n buf.setInt16(pos + 2, this.xMin);\n buf.setInt16(pos + 4, this.yMin);\n buf.setInt16(pos + 6, this.xMax);\n buf.setInt16(pos + 8, this.yMax);\n\n return 10;\n }\n\n scale(x, factor) {\n this.xMin = Math.round(x + (this.xMin - x) * factor);\n this.xMax = Math.round(x + (this.xMax - x) * factor);\n }\n}\n\nclass Contour {\n constructor({ flags, xCoordinates, yCoordinates }) {\n this.xCoordinates = xCoordinates;\n this.yCoordinates = yCoordinates;\n this.flags = flags;\n }\n}\n\nclass SimpleGlyph {\n constructor({ contours, instructions }) {\n this.contours = contours;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf, numberOfContours) {\n const endPtsOfContours = [];\n for (let i = 0; i < numberOfContours; i++) {\n const endPt = glyf.getUint16(pos);\n pos += 2;\n endPtsOfContours.push(endPt);\n }\n const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n const instructions = new Uint8Array(glyf).slice(\n pos,\n pos + instructionLength\n );\n pos += instructionLength;\n\n const flags = [];\n for (let i = 0; i < numberOfPt; pos++, i++) {\n let flag = glyf.getUint8(pos);\n flags.push(flag);\n if (flag & REPEAT_FLAG) {\n const count = glyf.getUint8(++pos);\n flag ^= REPEAT_FLAG;\n for (let m = 0; m < count; m++) {\n flags.push(flag);\n }\n i += count;\n }\n }\n\n const allXCoordinates = [];\n let xCoordinates = [];\n let yCoordinates = [];\n let pointFlags = [];\n const contours = [];\n let endPtsOfContoursIndex = 0;\n let lastCoordinate = 0;\n\n // Get x coordinates.\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const x = glyf.getUint8(pos++);\n lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n xCoordinates.push(lastCoordinate);\n } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n // IS_SAME.\n xCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n xCoordinates.push(lastCoordinate);\n }\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n endPtsOfContoursIndex++;\n allXCoordinates.push(xCoordinates);\n xCoordinates = [];\n }\n }\n\n lastCoordinate = 0;\n endPtsOfContoursIndex = 0;\n for (let i = 0; i < numberOfPt; i++) {\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n // 8-bits unsigned value.\n const y = glyf.getUint8(pos++);\n lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n yCoordinates.push(lastCoordinate);\n } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n // IS_SAME.\n yCoordinates.push(lastCoordinate);\n } else {\n lastCoordinate += glyf.getInt16(pos);\n pos += 2;\n yCoordinates.push(lastCoordinate);\n }\n\n pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\n\n if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n // Next entry is the first one of a new contour.\n xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n endPtsOfContoursIndex++;\n contours.push(\n new Contour({\n flags: pointFlags,\n xCoordinates,\n yCoordinates,\n })\n );\n yCoordinates = [];\n pointFlags = [];\n }\n }\n\n return new SimpleGlyph({\n contours,\n instructions,\n });\n }\n\n getSize() {\n let size = this.contours.length * 2 + 2 + this.instructions.length;\n let lastX = 0;\n let lastY = 0;\n for (const contour of this.contours) {\n size += contour.flags.length;\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n const x = contour.xCoordinates[i];\n const y = contour.yCoordinates[i];\n let abs = Math.abs(x - lastX);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastX = x;\n\n abs = Math.abs(y - lastY);\n if (abs > 255) {\n size += 2;\n } else if (abs > 0) {\n size += 1;\n }\n lastY = y;\n }\n }\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n const xCoordinates = [];\n const yCoordinates = [];\n const flags = [];\n let lastX = 0;\n let lastY = 0;\n\n for (const contour of this.contours) {\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n let flag = contour.flags[i];\n const x = contour.xCoordinates[i];\n let delta = x - lastX;\n if (delta === 0) {\n flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n xCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\n : X_SHORT_VECTOR;\n xCoordinates.push(abs);\n } else {\n xCoordinates.push(delta);\n }\n }\n lastX = x;\n\n const y = contour.yCoordinates[i];\n delta = y - lastY;\n if (delta === 0) {\n flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n yCoordinates.push(0);\n } else {\n const abs = Math.abs(delta);\n if (abs <= 255) {\n flag |=\n delta >= 0\n ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\n : Y_SHORT_VECTOR;\n yCoordinates.push(abs);\n } else {\n yCoordinates.push(delta);\n }\n }\n lastY = y;\n\n flags.push(flag);\n }\n\n // Write endPtsOfContours entry.\n buf.setUint16(pos, xCoordinates.length - 1);\n pos += 2;\n }\n\n // Write instructionLength.\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n if (this.instructions.length) {\n // Write instructions.\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n\n // Write flags.\n for (const flag of flags) {\n buf.setUint8(pos++, flag);\n }\n\n // Write xCoordinates.\n for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n const x = xCoordinates[i];\n const flag = flags[i];\n if (flag & X_SHORT_VECTOR) {\n buf.setUint8(pos++, x);\n } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n buf.setInt16(pos, x);\n pos += 2;\n }\n }\n\n // Write yCoordinates.\n for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n const y = yCoordinates[i];\n const flag = flags[i];\n if (flag & Y_SHORT_VECTOR) {\n buf.setUint8(pos++, y);\n } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n buf.setInt16(pos, y);\n pos += 2;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {\n for (const contour of this.contours) {\n if (contour.xCoordinates.length === 0) {\n continue;\n }\n\n for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n contour.xCoordinates[i] = Math.round(\n x + (contour.xCoordinates[i] - x) * factor\n );\n }\n }\n }\n}\n\nclass CompositeGlyph {\n constructor({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }) {\n this.flags = flags;\n this.glyphIndex = glyphIndex;\n this.argument1 = argument1;\n this.argument2 = argument2;\n this.transf = transf;\n this.instructions = instructions;\n }\n\n static parse(pos, glyf) {\n const spos = pos;\n const transf = [];\n let flags = glyf.getUint16(pos);\n const glyphIndex = glyf.getUint16(pos + 2);\n pos += 4;\n\n let argument1, argument2;\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt16(pos);\n argument2 = glyf.getInt16(pos + 2);\n } else {\n argument1 = glyf.getUint16(pos);\n argument2 = glyf.getUint16(pos + 2);\n }\n pos += 4;\n flags ^= ARG_1_AND_2_ARE_WORDS;\n } else {\n if (flags & ARGS_ARE_XY_VALUES) {\n argument1 = glyf.getInt8(pos);\n argument2 = glyf.getInt8(pos + 1);\n } else {\n argument1 = glyf.getUint8(pos);\n argument2 = glyf.getUint8(pos + 1);\n }\n pos += 2;\n }\n\n if (flags & WE_HAVE_A_SCALE) {\n // Single F2.14.\n transf.push(glyf.getUint16(pos));\n pos += 2;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n // Two F2.14.\n transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n pos += 4;\n } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n // Four F2.14.\n transf.push(\n glyf.getUint16(pos),\n glyf.getUint16(pos + 2),\n glyf.getUint16(pos + 4),\n glyf.getUint16(pos + 6)\n );\n pos += 8;\n }\n\n let instructions = null;\n if (flags & WE_HAVE_INSTRUCTIONS) {\n const instructionLength = glyf.getUint16(pos);\n pos += 2;\n instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n pos += instructionLength;\n }\n\n return [\n pos - spos,\n new CompositeGlyph({\n flags,\n glyphIndex,\n argument1,\n argument2,\n transf,\n instructions,\n }),\n ];\n }\n\n getSize() {\n let size = 2 + 2 + this.transf.length * 2;\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n size += 2 + this.instructions.length;\n }\n\n size += 2;\n if (this.flags & 2) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n size += 2;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n size += 2;\n }\n }\n\n return size;\n }\n\n write(pos, buf) {\n const spos = pos;\n\n if (this.flags & ARGS_ARE_XY_VALUES) {\n // Arguments are signed.\n if (\n !(\n this.argument1 >= -128 &&\n this.argument1 <= 127 &&\n this.argument2 >= -128 &&\n this.argument2 <= 127\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n } else {\n if (\n !(\n this.argument1 >= 0 &&\n this.argument1 <= 255 &&\n this.argument2 >= 0 &&\n this.argument2 <= 255\n )\n ) {\n this.flags |= ARG_1_AND_2_ARE_WORDS;\n }\n }\n\n buf.setUint16(pos, this.flags);\n buf.setUint16(pos + 2, this.glyphIndex);\n pos += 4;\n\n if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n if (this.flags & ARGS_ARE_XY_VALUES) {\n buf.setInt16(pos, this.argument1);\n buf.setInt16(pos + 2, this.argument2);\n } else {\n buf.setUint16(pos, this.argument1);\n buf.setUint16(pos + 2, this.argument2);\n }\n pos += 4;\n } else {\n buf.setUint8(pos, this.argument1);\n buf.setUint8(pos + 1, this.argument2);\n pos += 2;\n }\n\n if (this.flags & WE_HAVE_INSTRUCTIONS) {\n buf.setUint16(pos, this.instructions.length);\n pos += 2;\n // Write instructions.\n if (this.instructions.length) {\n new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\n this.instructions,\n pos\n );\n pos += this.instructions.length;\n }\n }\n\n return pos - spos;\n }\n\n scale(x, factor) {}\n}\n\nexport { GlyfTable };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { readUint32 } from \"./core_utils.js\";\nimport { string32 } from \"../shared/util.js\";\n\nfunction writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xff;\n dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n dest[offset] = (num >> 24) & 0xff;\n dest[offset + 1] = (num >> 16) & 0xff;\n dest[offset + 2] = (num >> 8) & 0xff;\n dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === \"string\") {\n for (let i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xff;\n }\n } else {\n // treating everything else as array\n for (const num of data) {\n dest[offset++] = num & 0xff;\n }\n }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n constructor(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n static getSearchParams(entriesCount, entrySize) {\n let maxPower2 = 1,\n log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n const searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n }\n\n toArray() {\n let sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n const tables = this.tables;\n const tablesNames = Object.keys(tables);\n tablesNames.sort();\n const numTables = tablesNames.length;\n\n let i, j, jj, table, tableName;\n // layout the tables data\n let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n const tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n const paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n const file = new Uint8Array(offset);\n // write the table data first (mostly for checksum)\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n // sfnt version (4 bytes)\n if (sfnt === \"true\") {\n // Windows hates the Mac TrueType sfnt version number\n sfnt = string32(0x00010000);\n }\n file[0] = sfnt.charCodeAt(0) & 0xff;\n file[1] = sfnt.charCodeAt(1) & 0xff;\n file[2] = sfnt.charCodeAt(2) & 0xff;\n file[3] = sfnt.charCodeAt(3) & 0xff;\n\n // numTables (2 bytes)\n writeInt16(file, 4, numTables);\n\n const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n // searchRange (2 bytes)\n writeInt16(file, 6, searchParams.range);\n // entrySelector (2 bytes)\n writeInt16(file, 8, searchParams.entry);\n // rangeShift (2 bytes)\n writeInt16(file, 10, searchParams.rangeShift);\n\n offset = OTF_HEADER_SIZE;\n // writing table entries\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xff;\n file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n\n // checksum\n let checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n const quad = readUint32(file, j);\n checksum = (checksum + quad) >>> 0;\n }\n writeInt32(file, offset + 4, checksum);\n\n // offset\n writeInt32(file, offset + 8, tableOffsets[i]);\n // length\n writeInt32(file, offset + 12, tables[tableName].length);\n\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\n }\n\n addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error(\"Table \" + tag + \" already exists\");\n }\n this.tables[tag] = data;\n }\n}\n\nexport { OpenTypeFileBuilder };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CFF,\n CFFCharset,\n CFFCompiler,\n CFFHeader,\n CFFIndex,\n CFFPrivateDict,\n CFFStandardStrings,\n CFFStrings,\n CFFTopDict,\n} from \"./cff_parser.js\";\nimport { FormatError, warn } from \"../shared/util.js\";\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \"./fonts_utils.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { Type1Parser } from \"./type1_parser.js\";\n\nfunction findBlock(streamBytes, signature, startIndex) {\n const streamBytesLength = streamBytes.length;\n const signatureLength = signature.length;\n const scanLength = streamBytesLength - signatureLength;\n\n let i = startIndex,\n found = false;\n while (i < scanLength) {\n let j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) {\n // `signature` found, skip over whitespace.\n i += j;\n while (i < streamBytesLength && isWhiteSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i,\n };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n const streamStartPos = stream.pos; // Save the initial stream position.\n let headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n // cannot hold the result of `getBytes`, and fallback to simply checking\n // the entire stream (fixes issue3928.pdf).\n }\n\n if (headerBytesLength === suggestedLength) {\n // Most of the time `suggestedLength` is correct, so to speed things up we\n // initially only check the last few bytes to see if the header was found.\n // Otherwise we (potentially) check the entire stream to prevent errors in\n // `Type1Parser` (fixes issue5686.pdf).\n block = findBlock(\n headerBytes,\n EEXEC_SIGNATURE,\n suggestedLength - 2 * EEXEC_SIGNATURE.length\n );\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength,\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos; // Reset the stream position.\n\n const SCAN_BLOCK_LENGTH = 2048;\n let actualLength;\n while (true) {\n const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length; // Update the stream position.\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos; // Reset the stream position.\n\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength,\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength,\n };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n // We should ideally parse the eexec block to ensure that `suggestedLength`\n // is correct, so we don't truncate the block data if it's too small.\n // However, this would also require checking if the fixed-content portion\n // exists (using the 'Length3' property), and ensuring that it's valid.\n //\n // Given that `suggestedLength` almost always is correct, all the validation\n // would require a great deal of unnecessary parsing for most fonts.\n // To save time, we always fetch the entire stream instead, which also avoid\n // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n //\n // NOTE: This means that the function can include the fixed-content portion\n // in the returned eexec block. In practice this does *not* seem to matter,\n // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n const eexecBytes = stream.getBytes();\n if (eexecBytes.length === 0) {\n throw new FormatError(\"getEexecBlock - no font program found.\");\n }\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n}\n\n/**\n * Type1Font is also a CIDFontType0.\n */\nclass Type1Font {\n constructor(name, file, properties) {\n // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n // Also, length1 and length2 might be off by 6 bytes as well.\n // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n const PFB_HEADER_SIZE = 6;\n let headerBlockLength = properties.length1;\n let eexecBlockLength = properties.length2;\n let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Get the data block containing glyphs and subrs information\n const headerBlock = getHeaderBlock(file, headerBlockLength);\n const headerBlockParser = new Type1Parser(\n headerBlock.stream,\n false,\n SEAC_ANALYSIS_ENABLED\n );\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength =\n (pfbHeader[5] << 24) |\n (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) |\n pfbHeader[2];\n }\n\n // Decrypt the data blocks and retrieve it's content\n const eexecBlock = getEexecBlock(file, eexecBlockLength);\n const eexecBlockParser = new Type1Parser(\n eexecBlock.stream,\n true,\n SEAC_ANALYSIS_ENABLED\n );\n const data = eexecBlockParser.extractFontProgram(properties);\n for (const key in data.properties) {\n properties[key] = data.properties[key];\n }\n\n const charstrings = data.charstrings;\n const type2Charstrings = this.getType2Charstrings(charstrings);\n const subrs = this.getType2Subrs(data.subrs);\n\n this.charstrings = charstrings;\n this.data = this.wrap(\n name,\n type2Charstrings,\n this.charstrings,\n subrs,\n properties\n );\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n get numGlyphs() {\n return this.charstrings.length + 1;\n }\n\n getCharset() {\n const charset = [\".notdef\"];\n for (const { glyphName } of this.charstrings) {\n charset.push(glyphName);\n }\n return charset;\n }\n\n getGlyphMapping(properties) {\n const charstrings = this.charstrings;\n\n if (properties.composite) {\n const charCodeToGlyphId = Object.create(null);\n // Map CIDs directly to GIDs.\n for (\n let glyphId = 0, charstringsLen = charstrings.length;\n glyphId < charstringsLen;\n glyphId++\n ) {\n const charCode = properties.cMap.charCodeOf(glyphId);\n // Add 1 because glyph 0 is duplicated.\n charCodeToGlyphId[charCode] = glyphId + 1;\n }\n return charCodeToGlyphId;\n }\n\n const glyphNames = [\".notdef\"];\n let builtInEncoding, glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n const encoding = properties.builtInEncoding;\n if (encoding) {\n builtInEncoding = Object.create(null);\n for (const charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n }\n\n hasGlyphId(id) {\n if (id < 0 || id >= this.numGlyphs) {\n return false;\n }\n if (id === 0) {\n // notdef is always defined.\n return true;\n }\n const glyph = this.charstrings[id - 1];\n return glyph.charstring.length > 0;\n }\n\n getSeacs(charstrings) {\n const seacMap = [];\n for (let i = 0, ii = charstrings.length; i < ii; i++) {\n const charstring = charstrings[i];\n if (charstring.seac) {\n // Offset by 1 for .notdef\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n }\n\n getType2Charstrings(type1Charstrings) {\n const type2Charstrings = [];\n for (const type1Charstring of type1Charstrings) {\n type2Charstrings.push(type1Charstring.charstring);\n }\n return type2Charstrings;\n }\n\n getType2Subrs(type1Subrs) {\n let bias = 0;\n const count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n // Add a bunch of empty subrs to deal with the Type2 bias\n const type2Subrs = [];\n let i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0b]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n }\n\n wrap(name, glyphs, charstrings, subrs, properties) {\n const cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n const topDict = new CFFTopDict();\n // CFF strings IDs 0...390 are predefined names, so refering\n // to entries in our own String INDEX starts at SID 391.\n topDict.setByName(\"version\", 391);\n topDict.setByName(\"Notice\", 392);\n topDict.setByName(\"FullName\", 393);\n topDict.setByName(\"FamilyName\", 394);\n topDict.setByName(\"Weight\", 395);\n topDict.setByName(\"Encoding\", null); // placeholder\n topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n topDict.setByName(\"FontBBox\", properties.bbox);\n topDict.setByName(\"charset\", null); // placeholder\n topDict.setByName(\"CharStrings\", null); // placeholder\n topDict.setByName(\"Private\", null); // placeholder\n cff.topDict = topDict;\n\n const strings = new CFFStrings();\n strings.add(\"Version 0.11\"); // Version\n strings.add(\"See original notice\"); // Notice\n strings.add(name); // FullName\n strings.add(name); // FamilyName\n strings.add(\"Medium\"); // Weight\n cff.strings = strings;\n\n cff.globalSubrIndex = new CFFIndex();\n\n const count = glyphs.length;\n const charsetArray = [\".notdef\"];\n let i, ii;\n for (i = 0; i < count; i++) {\n const glyphName = charstrings[i].glyphName;\n const index = CFFStandardStrings.indexOf(glyphName);\n if (index === -1) {\n strings.add(glyphName);\n }\n charsetArray.push(glyphName);\n }\n cff.charset = new CFFCharset(false, 0, charsetArray);\n\n const charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8b, 0x0e]); // .notdef\n for (i = 0; i < count; i++) {\n charStringsIndex.add(glyphs[i]);\n }\n cff.charStrings = charStringsIndex;\n\n const privateDict = new CFFPrivateDict();\n privateDict.setByName(\"Subrs\", null); // placeholder\n const fields = [\n \"BlueValues\",\n \"OtherBlues\",\n \"FamilyBlues\",\n \"FamilyOtherBlues\",\n \"StemSnapH\",\n \"StemSnapV\",\n \"BlueShift\",\n \"BlueFuzz\",\n \"BlueScale\",\n \"LanguageGroup\",\n \"ExpansionFactor\",\n \"ForceBold\",\n \"StdHW\",\n \"StdVW\",\n ];\n for (i = 0, ii = fields.length; i < ii; i++) {\n const field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n const value = properties.privateData[field];\n if (Array.isArray(value)) {\n // All of the private dictionary array data in CFF must be stored as\n // \"delta-encoded\" numbers.\n for (let j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1]; // ... difference from previous value\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n\n const subrIndex = new CFFIndex();\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n privateDict.subrsIndex = subrIndex;\n\n const compiler = new CFFCompiler(cff);\n return compiler.compile();\n }\n}\n\nexport { Type1Font };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getEncoding } from \"./encodings.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\nimport { Stream } from \"./stream.js\";\nimport { warn } from \"../shared/util.js\";\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nconst HINTING_ENABLED = false;\n\nconst COMMAND_MAP = {\n hstem: [1],\n vstem: [3],\n vmoveto: [4],\n rlineto: [5],\n hlineto: [6],\n vlineto: [7],\n rrcurveto: [8],\n callsubr: [10],\n flex: [12, 35],\n drop: [12, 18],\n endchar: [14],\n rmoveto: [21],\n hmoveto: [22],\n vhcurveto: [30],\n hvcurveto: [31],\n};\n\n/**\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n * A CharString byte containing the values from 32 through 255 inclusive\n * indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n * CharStrings commands are encoded in 1 or 2 bytes.\n *\n * Single byte commands are encoded in 1 byte that contains a value between\n * 0 and 31 inclusive.\n * If a command byte contains the value 12, then the value in the next byte\n * indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nclass Type1CharString {\n constructor() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n convert(encoded, subrs, seacAnalysisEnabled) {\n const count = encoded.length;\n let error = false;\n let wx, sbx, subrNumber;\n for (let i = 0; i < count; i++) {\n let value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1: // hstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3: // vstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4: // vmoveto\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n // Add the dx for flex and but also swap the values so they are\n // the right order.\n const dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5: // rlineto\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6: // hlineto\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7: // vlineto\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8: // rrcurveto\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9: // closepath\n // closepath is a Type1 command that does not take argument and is\n // useless in Type2 and it can simply be ignored.\n this.stack = [];\n break;\n case 10: // callsubr\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n if (!subrs[subrNumber]) {\n error = true;\n break;\n }\n error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n break;\n case 11: // return\n return error;\n case 13: // hsbw\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use hmoveto with lsb.\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14: // endchar\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21: // rmoveto\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22: // hmoveto\n if (this.flexing) {\n // Add the dy for flex.\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30: // vhcurveto\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31: // hvcurveto\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0: // dotsection\n // dotsection is a Type1 command to specify some hinting feature\n // for dots that do not take a parameter and it can safely be\n // ignored for Type2.\n this.stack = [];\n break;\n case (12 << 8) + 1: // vstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n // multiple parameters, so instead of returning [vh]stem3 take a\n // shortcut and return [vhstem] instead.\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2: // hstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // See vstem3.\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6: // seac\n // seac is like type 2's special endchar but it doesn't use the\n // first argument asb, so remove it.\n if (seacAnalysisEnabled) {\n const asb = this.stack.at(-5);\n this.seac = this.stack.splice(-4, 4);\n this.seac[0] += this.lsb - asb;\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7: // sbw\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use rmoveto with\n // (dx, dy). The height argument will not be used for vmtx and\n // vhea tables reconstruction -- ignoring it.\n this.stack.pop(); // wy\n wx = this.stack.pop();\n const sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12: // div\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n const num2 = this.stack.pop();\n const num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16: // callothersubr\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n const numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(\n flexArgs[2] + flexArgs[0], // bcp1x + rpx\n flexArgs[3] + flexArgs[1], // bcp1y + rpy\n flexArgs[4], // bcp2x\n flexArgs[5], // bcp2y\n flexArgs[6], // p2x\n flexArgs[7], // p2y\n flexArgs[8], // bcp3x\n flexArgs[9], // bcp3y\n flexArgs[10], // bcp4x\n flexArgs[11], // bcp4y\n flexArgs[12], // p3x\n flexArgs[13], // p3y\n flexArgs[14] // flexDepth\n // 15 = finalx unused by flex\n // 16 = finaly unused by flex\n );\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17: // pop\n // Ignore this since it is only used with othersubr.\n break;\n case (12 << 8) + 33: // setcurrentpoint\n // Ignore for now.\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value -= 139;\n } else if (value <= 250) {\n value = (value - 247) * 256 + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value =\n ((encoded[++i] & 0xff) << 24) |\n ((encoded[++i] & 0xff) << 16) |\n ((encoded[++i] & 0xff) << 8) |\n ((encoded[++i] & 0xff) << 0);\n }\n this.stack.push(value);\n }\n return error;\n }\n\n executeCommand(howManyArgs, command, keepStack) {\n const stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n const start = stackLength - howManyArgs;\n for (let i = start; i < stackLength; i++) {\n let value = this.stack[i];\n if (Number.isInteger(value)) {\n this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n } else {\n // fixed point\n value = (65536 * value) | 0;\n this.output.push(\n 255,\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n }\n }\n this.output.push(...command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n }\n}\n\n/**\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n * of Plaintext Bytes. The function takes a key as a parameter which can be\n * for decrypting the eexec block or for decoding charStrings.\n */\nconst EEXEC_ENCRYPT_KEY = 55665;\nconst CHAR_STRS_ENCRYPT_KEY = 4330;\n\nfunction isHexDigit(code) {\n return (\n (code >= 48 && code <= 57) || // '0'-'9'\n (code >= 65 && code <= 70) || // 'A'-'F'\n (code >= 97 && code <= 102) // 'a'-'f'\n );\n}\n\nfunction decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0,\n i,\n j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n const count = data.length - discardNumber;\n const decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n const value = data[i];\n decrypted[j] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n return decrypted;\n}\n\nfunction decryptAscii(data, key, discardNumber) {\n const c1 = 52845,\n c2 = 22719;\n let r = key | 0;\n const count = data.length,\n maybeLength = count >>> 1;\n const decrypted = new Uint8Array(maybeLength);\n let i, j;\n for (i = 0, j = 0; i < count; i++) {\n const digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n let digit2;\n while (i < count && !isHexDigit((digit2 = data[i]))) {\n i++;\n }\n if (i < count) {\n const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n }\n return decrypted.slice(discardNumber, j);\n}\n\nfunction isSpecial(c) {\n return (\n c === /* '/' = */ 0x2f ||\n c === /* '[' = */ 0x5b ||\n c === /* ']' = */ 0x5d ||\n c === /* '{' = */ 0x7b ||\n c === /* '}' = */ 0x7d ||\n c === /* '(' = */ 0x28 ||\n c === /* ')' = */ 0x29\n );\n}\n\n/**\n * Type1Parser encapsulate the needed code for parsing a Type1 font program.\n * Some of its logic depends on the Type2 charstrings structure.\n * NOTE: This doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nclass Type1Parser {\n constructor(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n const data = stream.getBytes();\n const isBinary = !(\n (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\n isHexDigit(data[1]) &&\n isHexDigit(data[2]) &&\n isHexDigit(data[3]) &&\n isHexDigit(data[4]) &&\n isHexDigit(data[5]) &&\n isHexDigit(data[6]) &&\n isHexDigit(data[7])\n );\n stream = new Stream(\n isBinary\n ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\n : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\n );\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n this.stream = stream;\n this.nextChar();\n }\n\n readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n const array = [];\n while (true) {\n const token = this.getToken();\n if (token === null || token === \"]\" || token === \"}\") {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n }\n\n readNumber() {\n const token = this.getToken();\n return parseFloat(token || 0);\n }\n\n readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n const token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n }\n\n readBoolean() {\n const token = this.getToken();\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === \"true\" ? 1 : 0;\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n prevChar() {\n this.stream.skip(-2);\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n // Eat whitespace and comments.\n let comment = false;\n let ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n let token = \"\";\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\n return token;\n }\n\n readCharStrings(bytes, lenIV) {\n if (lenIV === -1) {\n // This isn't in the spec, but Adobe's tx program handles -1\n // as plain text.\n return bytes;\n }\n return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n }\n\n /*\n * Returns an object containing a Subrs array and a CharStrings\n * array extracted from and eexec encrypted block of data\n */\n extractFontProgram(properties) {\n const stream = this.stream;\n\n const subrs = [],\n charstrings = [];\n const privateData = Object.create(null);\n privateData.lenIV = 4;\n const program = {\n subrs: [],\n charstrings: [],\n properties: {\n privateData,\n },\n };\n let token, length, data, lenIV;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"CharStrings\":\n // The number immediately following CharStrings must be greater or\n // equal to the number of CharStrings.\n this.getToken();\n this.getToken(); // read in 'dict'\n this.getToken(); // read in 'dup'\n this.getToken(); // read in 'begin'\n while (true) {\n token = this.getToken();\n if (token === null || token === \"end\") {\n break;\n }\n\n if (token !== \"/\") {\n continue;\n }\n const glyph = this.getToken();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n const encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'ND' or '|-'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'def'\n } else if (token === \"/\") {\n // The expected 'ND' or '|-' token is missing, avoid swallowing\n // the start of the next glyph (fixes issue14462_reduced.pdf).\n this.prevChar();\n }\n charstrings.push({\n glyph,\n encoded,\n });\n }\n break;\n case \"Subrs\":\n this.readInt(); // num\n this.getToken(); // read in 'array'\n while (this.getToken() === \"dup\") {\n const index = this.readInt();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n lenIV = program.properties.privateData.lenIV;\n const encoded = this.readCharStrings(data, lenIV);\n this.nextChar();\n token = this.getToken(); // read in 'NP' or '|'\n if (token === \"noaccess\") {\n this.getToken(); // read in 'put'\n }\n subrs[index] = encoded;\n }\n break;\n case \"BlueValues\":\n case \"OtherBlues\":\n case \"FamilyBlues\":\n case \"FamilyOtherBlues\":\n const blueArray = this.readNumberArray();\n // *Blue* values may contain invalid data: disables reading of\n // those values when hinting is disabled.\n if (\n blueArray.length > 0 &&\n blueArray.length % 2 === 0 &&\n HINTING_ENABLED\n ) {\n program.properties.privateData[token] = blueArray;\n }\n break;\n case \"StemSnapH\":\n case \"StemSnapV\":\n program.properties.privateData[token] = this.readNumberArray();\n break;\n case \"StdHW\":\n case \"StdVW\":\n program.properties.privateData[token] = this.readNumberArray()[0];\n break;\n case \"BlueShift\":\n case \"lenIV\":\n case \"BlueFuzz\":\n case \"BlueScale\":\n case \"LanguageGroup\":\n program.properties.privateData[token] = this.readNumber();\n break;\n case \"ExpansionFactor\":\n // Firefox doesn't render correctly a font with a null factor on\n // Windows (see issue 15289), hence we just reset it to its default\n // value (0.06).\n program.properties.privateData[token] = this.readNumber() || 0.06;\n break;\n case \"ForceBold\":\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (const { encoded, glyph } of charstrings) {\n const charString = new Type1CharString();\n const error = charString.convert(\n encoded,\n subrs,\n this.seacAnalysisEnabled\n );\n let output = charString.output;\n if (error) {\n // It seems when FreeType encounters an error while evaluating a glyph\n // that it completely ignores the glyph so we'll mimic that behaviour\n // here and put an endchar to make the validator happy.\n output = [14];\n }\n const charStringObject = {\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac,\n };\n if (glyph === \".notdef\") {\n // Make sure .notdef is at index zero (issue #11477).\n program.charstrings.unshift(charStringObject);\n } else {\n program.charstrings.push(charStringObject);\n }\n\n // Attempt to replace missing widths, from the font dictionary /Widths\n // entry, with ones from the font data (fixes issue11150_reduced.pdf).\n if (properties.builtInEncoding) {\n const index = properties.builtInEncoding.indexOf(glyph);\n if (\n index > -1 &&\n properties.widths[index] === undefined &&\n index >= properties.firstChar &&\n index <= properties.lastChar\n ) {\n properties.widths[index] = charString.width;\n }\n }\n }\n\n return program;\n }\n\n extractFontHeader(properties) {\n let token;\n while ((token = this.getToken()) !== null) {\n if (token !== \"/\") {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case \"FontMatrix\":\n const matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case \"Encoding\":\n const encodingArg = this.getToken();\n let encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n const size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (let j = 0; j < size; j++) {\n token = this.getToken();\n // skipping till first dup or def (e.g. ignoring for statement)\n while (token !== \"dup\" && token !== \"def\") {\n token = this.getToken();\n if (token === null) {\n return; // invalid header\n }\n }\n if (token === \"def\") {\n break; // read all array data\n }\n const index = this.readInt();\n this.getToken(); // read in '/'\n const glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken(); // read the in 'put'\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case \"FontBBox\":\n const fontBBox = this.readNumberArray();\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n }\n}\n\nexport { Type1Parser };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FormatError,\n info,\n shadow,\n unreachable,\n UNSUPPORTED_FEATURES,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nconst ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7,\n};\n\nclass Pattern {\n constructor() {\n unreachable(\"Cannot initialize Pattern.\");\n }\n\n static parseShading(\n shading,\n xref,\n res,\n handler,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n const dict = shading instanceof BaseStream ? shading.dict : shading;\n const type = dict.get(\"ShadingType\");\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n return new RadialAxialShading(\n dict,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new MeshShading(\n shading,\n xref,\n res,\n pdfFunctionFactory,\n localColorSpaceCache\n );\n default:\n throw new FormatError(\"Unsupported ShadingType: \" + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n handler.send(\"UnsupportedFeature\", {\n featureId: UNSUPPORTED_FEATURES.shadingPattern,\n });\n }\n warn(ex);\n return new DummyShading();\n }\n }\n}\n\nclass BaseShading {\n // A small number to offset the first/last color stops so we can insert ones\n // to support extend. Number.MIN_VALUE is too small and breaks the extend.\n static get SMALL_NUMBER() {\n return shadow(this, \"SMALL_NUMBER\", 1e-6);\n }\n\n constructor() {\n if (this.constructor === BaseShading) {\n unreachable(\"Cannot initialize BaseShading.\");\n }\n }\n\n getIR() {\n unreachable(\"Abstract method `getIR` called.\");\n }\n}\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes.\nclass RadialAxialShading extends BaseShading {\n constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n super();\n this.coordsArr = dict.getArray(\"Coords\");\n this.shadingType = dict.get(\"ShadingType\");\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n\n let t0 = 0.0,\n t1 = 1.0;\n if (dict.has(\"Domain\")) {\n const domainArr = dict.getArray(\"Domain\");\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n let extendStart = false,\n extendEnd = false;\n if (dict.has(\"Extend\")) {\n const extendArr = dict.getArray(\"Extend\");\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (\n this.shadingType === ShadingType.RADIAL &&\n (!extendStart || !extendEnd)\n ) {\n // Radial gradient only currently works if either circle is fully within\n // the other circle.\n const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n const distance = Math.hypot(x1 - x2, y1 - y2);\n if (r1 <= r2 + distance && r2 <= r1 + distance) {\n warn(\"Unsupported radial gradient.\");\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = pdfFunctionFactory.createFromArray(fnObj);\n\n // 10 samples seems good enough for now, but probably won't work\n // if there are sharp color changes. Ideally, we would implement\n // the spec faithfully and add lossless optimizations.\n const NUMBER_OF_SAMPLES = 10;\n const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n\n const colorStops = (this.colorStops = []);\n\n // Protect against bad domains.\n if (t0 >= t1 || step <= 0) {\n // Acrobat doesn't seem to handle these cases so we'll ignore for\n // now.\n info(\"Bad shading domain.\");\n return;\n }\n\n const color = new Float32Array(cs.numComps),\n ratio = new Float32Array(1);\n let rgbColor;\n for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n ratio[0] = t0 + i * step;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n const cssColor = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n }\n\n let background = \"transparent\";\n if (dict.has(\"Background\")) {\n rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n // Insert a color stop at the front and offset the first real color stop\n // so it doesn't conflict with the one we insert.\n colorStops.unshift([0, background]);\n colorStops[1][0] += BaseShading.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n getIR() {\n const coordsArr = this.coordsArr;\n const shadingType = this.shadingType;\n let type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = \"axial\";\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = \"radial\";\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n\n return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n }\n}\n\n// All mesh shadings. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nclass MeshStreamReader {\n constructor(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n const numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n const csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn\n ? new Float32Array(csNumComps)\n : this.tmpCompsBuf;\n }\n\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n const nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n }\n\n readBits(n) {\n let buffer = this.buffer;\n let bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return (\n ((this.stream.getByte() << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte()) >>>\n 0\n );\n }\n buffer =\n (buffer << 24) |\n (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) |\n this.stream.getByte();\n const nextByte = this.stream.getByte();\n this.buffer = nextByte & ((1 << bufferLength) - 1);\n return (\n ((buffer << (8 - bufferLength)) |\n ((nextByte & 0xff) >> bufferLength)) >>>\n 0\n );\n }\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n while (bufferLength < n) {\n buffer = (buffer << 8) | this.stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & ((1 << bufferLength) - 1);\n return buffer >> bufferLength;\n }\n\n align() {\n this.buffer = 0;\n this.bufferLength = 0;\n }\n\n readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n }\n\n readCoordinate() {\n const bitsPerCoordinate = this.context.bitsPerCoordinate;\n const xi = this.readBits(bitsPerCoordinate);\n const yi = this.readBits(bitsPerCoordinate);\n const decode = this.context.decode;\n const scale =\n bitsPerCoordinate < 32\n ? 1 / ((1 << bitsPerCoordinate) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n return [\n xi * scale * (decode[1] - decode[0]) + decode[0],\n yi * scale * (decode[3] - decode[2]) + decode[2],\n ];\n }\n\n readComponents() {\n const numComps = this.context.numComps;\n const bitsPerComponent = this.context.bitsPerComponent;\n const scale =\n bitsPerComponent < 32\n ? 1 / ((1 << bitsPerComponent) - 1)\n : 2.3283064365386963e-10; // 2 ^ -32\n const decode = this.context.decode;\n const components = this.tmpCompsBuf;\n for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n const ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n const color = this.tmpCsCompsBuf;\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n return this.context.colorSpace.getRgb(color, 0);\n }\n}\n\nconst getB = (function getBClosure() {\n function buildB(count) {\n const lut = [];\n for (let i = 0; i <= count; i++) {\n const t = i / count,\n t_ = 1 - t;\n lut.push(\n new Float32Array([\n t_ * t_ * t_,\n 3 * t * t_ * t_,\n 3 * t * t * t_,\n t * t * t,\n ])\n );\n }\n return lut;\n }\n const cache = [];\n\n return function (count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n})();\n\nclass MeshShading extends BaseShading {\n static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n }\n\n static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n return shadow(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n }\n\n // Count of triangles per entire mesh bounds.\n static get TRIANGLE_DENSITY() {\n return shadow(this, \"TRIANGLE_DENSITY\", 20);\n }\n\n constructor(\n stream,\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache\n ) {\n super();\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"Mesh data is not a stream\");\n }\n const dict = stream.dict;\n this.shadingType = dict.get(\"ShadingType\");\n const bbox = dict.getArray(\"BBox\");\n if (Array.isArray(bbox) && bbox.length === 4) {\n this.bbox = Util.normalizeRect(bbox);\n } else {\n this.bbox = null;\n }\n const cs = ColorSpace.parse({\n cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n xref,\n resources,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.background = dict.has(\"Background\")\n ? cs.getRgb(dict.get(\"Background\"), 0)\n : null;\n\n const fnObj = dict.getRaw(\"Function\");\n const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n const decodeContext = {\n bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n bitsPerComponent: dict.get(\"BitsPerComponent\"),\n bitsPerFlag: dict.get(\"BitsPerFlag\"),\n decode: dict.getArray(\"Decode\"),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps,\n };\n const reader = new MeshStreamReader(stream, decodeContext);\n\n let patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n this._decodeType4Shading(reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n if (verticesPerRow < 2) {\n throw new FormatError(\"Invalid VerticesPerRow\");\n }\n this._decodeType5Shading(reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n this._decodeType6Shading(reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n this._decodeType7Shading(reader);\n patchMesh = true;\n break;\n default:\n unreachable(\"Unsupported mesh type.\");\n break;\n }\n\n if (patchMesh) {\n // Dirty bounds calculation, to determine how dense the triangles will be.\n this._updateBounds();\n for (let i = 0, ii = this.figures.length; i < ii; i++) {\n this._buildFigureFromPatch(i);\n }\n }\n // Calculate bounds.\n this._updateBounds();\n\n this._packData();\n }\n\n _decodeType4Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const operators = [];\n const ps = []; // not maintaining cs since that will match ps\n let verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n const f = reader.readFlag();\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n if (verticesLeft === 0) {\n // ignoring flags if we started a triangle\n if (!(0 <= f && f <= 2)) {\n throw new FormatError(\"Unknown type4 flag\");\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps.at(-2), ps.at(-1));\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps.at(-3), ps.at(-1));\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n\n reader.align();\n }\n this.figures.push({\n type: \"triangles\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n _decodeType5Shading(reader, verticesPerRow) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n const coord = reader.readCoordinate();\n const color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n this.figures.push({\n type: \"lattice\",\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n _decodeType6Shading(reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type6 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7;\n ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n // set p11, p12, p21, p22\n ps[5] = coords.length;\n coords.push([\n (-4 * coords[ps[0]][0] -\n coords[ps[15]][0] +\n 6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[13]][0] + coords[ps[7]][0])) /\n 9,\n (-4 * coords[ps[0]][1] -\n coords[ps[15]][1] +\n 6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[13]][1] + coords[ps[7]][1])) /\n 9,\n ]);\n ps[6] = coords.length;\n coords.push([\n (-4 * coords[ps[3]][0] -\n coords[ps[12]][0] +\n 6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[4]][0] + coords[ps[14]][0])) /\n 9,\n (-4 * coords[ps[3]][1] -\n coords[ps[12]][1] +\n 6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[4]][1] + coords[ps[14]][1])) /\n 9,\n ]);\n ps[9] = coords.length;\n coords.push([\n (-4 * coords[ps[12]][0] -\n coords[ps[3]][0] +\n 6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[11]][0] + coords[ps[1]][0])) /\n 9,\n (-4 * coords[ps[12]][1] -\n coords[ps[3]][1] +\n 6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[11]][1] + coords[ps[1]][1])) /\n 9,\n ]);\n ps[10] = coords.length;\n coords.push([\n (-4 * coords[ps[15]][0] -\n coords[ps[0]][0] +\n 6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[2]][0] + coords[ps[8]][0])) /\n 9,\n (-4 * coords[ps[15]][1] -\n coords[ps[0]][1] +\n 6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[2]][1] + coords[ps[8]][1])) /\n 9,\n ]);\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _decodeType7Shading(reader) {\n const coords = this.coords;\n const colors = this.colors;\n const ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n const cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n const f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError(\"Unknown type7 flag\");\n }\n const pi = coords.length;\n for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n const ci = colors.length;\n for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n colors.push(reader.readComponents());\n }\n let tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n // prettier-ignore\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n // prettier-ignore\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n // prettier-ignore\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n this.figures.push({\n type: \"patch\",\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n _buildFigureFromPatch(index) {\n const figure = this.figures[index];\n assert(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n\n const coords = this.coords,\n colors = this.colors;\n const pi = figure.coords;\n const ci = figure.colors;\n\n const figureMinX = Math.min(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMinY = Math.min(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n const figureMaxX = Math.max(\n coords[pi[0]][0],\n coords[pi[3]][0],\n coords[pi[12]][0],\n coords[pi[15]][0]\n );\n const figureMaxY = Math.max(\n coords[pi[0]][1],\n coords[pi[3]][1],\n coords[pi[12]][1],\n coords[pi[15]][1]\n );\n let splitXBy = Math.ceil(\n ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[2] - this.bounds[0])\n );\n splitXBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\n );\n let splitYBy = Math.ceil(\n ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) /\n (this.bounds[3] - this.bounds[1])\n );\n splitYBy = Math.max(\n MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\n );\n\n const verticesPerRow = splitXBy + 1;\n const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n let k = 0;\n const cl = new Uint8Array(3),\n cr = new Uint8Array(3);\n const c0 = colors[ci[0]],\n c1 = colors[ci[1]],\n c2 = colors[ci[2]],\n c3 = colors[ci[3]];\n const bRow = getB(splitYBy),\n bCol = getB(splitXBy);\n for (let row = 0; row <= splitYBy; row++) {\n cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n for (let col = 0; col <= splitXBy; col++, k++) {\n if (\n (row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)\n ) {\n continue;\n }\n let x = 0,\n y = 0;\n let q = 0;\n for (let i = 0; i <= 3; i++) {\n for (let j = 0; j <= 3; j++, q++) {\n const m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n const newColor = new Uint8Array(3);\n newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n this.figures[index] = {\n type: \"lattice\",\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n _updateBounds() {\n let minX = this.coords[0][0],\n minY = this.coords[0][1],\n maxX = minX,\n maxY = minY;\n for (let i = 1, ii = this.coords.length; i < ii; i++) {\n const x = this.coords[i][0],\n y = this.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n this.bounds = [minX, minY, maxX, maxY];\n }\n\n _packData() {\n let i, ii, j, jj;\n\n const coords = this.coords;\n const coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n const xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n this.coords = coordsPacked;\n\n const colors = this.colors;\n const colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n const c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n this.colors = colorsPacked;\n\n const figures = this.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n const figure = figures[i],\n ps = figure.coords,\n cs = figure.colors;\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n getIR() {\n return [\n \"Mesh\",\n this.shadingType,\n this.coords,\n this.colors,\n this.figures,\n this.bounds,\n this.bbox,\n this.background,\n ];\n }\n}\n\nclass DummyShading extends BaseShading {\n getIR() {\n return [\"Dummy\"];\n }\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n const matrix = dict.getArray(\"Matrix\");\n const bbox = Util.normalizeRect(dict.getArray(\"BBox\"));\n const xstep = dict.get(\"XStep\");\n const ystep = dict.get(\"YStep\");\n const paintType = dict.get(\"PaintType\");\n const tilingType = dict.get(\"TilingType\");\n\n // Ensure that the pattern has a non-zero width and height, to prevent errors\n // in `pattern_helper.js` (fixes issue8330.pdf).\n if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\n \"TilingPattern\",\n color,\n operatorList,\n matrix,\n bbox,\n xstep,\n ystep,\n paintType,\n tilingType,\n ];\n}\n\nexport { getTilingPatternIR, Pattern };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n} from \"./calibri_factors.js\";\nimport { Dict, Name } from \"./primitives.js\";\nimport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n} from \"./helvetica_factors.js\";\nimport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n} from \"./liberationsans_widths.js\";\nimport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n} from \"./myriadpro_factors.js\";\nimport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n} from \"./segoeui_factors.js\";\nimport { getLookupTableFactory } from \"./core_utils.js\";\nimport { normalizeFontName } from \"./fonts_utils.js\";\n\nconst getXFAFontMap = getLookupTableFactory(function (t) {\n t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: MyriadProRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: MyriadProRegularMetrics,\n };\n t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: MyriadProBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: MyriadProBoldMetrics,\n };\n t[\"MyriadPro-It\"] =\n t[\"MyriadPro-Italic\"] =\n t[\"PdfJS-Fallback-Italic\"] =\n {\n name: \"LiberationSans-Italic\",\n factors: MyriadProItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: MyriadProItalicMetrics,\n };\n t[\"MyriadPro-BoldIt\"] =\n t[\"MyriadPro-BoldItalic\"] =\n t[\"PdfJS-Fallback-BoldItalic\"] =\n {\n name: \"LiberationSans-BoldItalic\",\n factors: MyriadProBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: MyriadProBoldItalicMetrics,\n };\n t.ArialMT =\n t.Arial =\n t[\"Arial-Regular\"] =\n {\n name: \"LiberationSans-Regular\",\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n };\n t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n name: \"LiberationSans-Bold\",\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n };\n t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n name: \"LiberationSans-Italic\",\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n };\n t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n };\n t[\"Calibri-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: CalibriRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: CalibriRegularMetrics,\n };\n t[\"Calibri-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: CalibriBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: CalibriBoldMetrics,\n };\n t[\"Calibri-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: CalibriItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: CalibriItalicMetrics,\n };\n t[\"Calibri-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: CalibriBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: CalibriBoldItalicMetrics,\n };\n t[\"Segoeui-Regular\"] = {\n name: \"LiberationSans-Regular\",\n factors: SegoeuiRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: SegoeuiRegularMetrics,\n };\n t[\"Segoeui-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: SegoeuiBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: SegoeuiBoldMetrics,\n };\n t[\"Segoeui-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: SegoeuiItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: SegoeuiItalicMetrics,\n };\n t[\"Segoeui-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: SegoeuiBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: SegoeuiBoldItalicMetrics,\n };\n t[\"Helvetica-Regular\"] = t.Helvetica = {\n name: \"LiberationSans-Regular\",\n factors: HelveticaRegularFactors,\n baseWidths: LiberationSansRegularWidths,\n baseMapping: LiberationSansRegularMapping,\n metrics: HelveticaRegularMetrics,\n };\n t[\"Helvetica-Bold\"] = {\n name: \"LiberationSans-Bold\",\n factors: HelveticaBoldFactors,\n baseWidths: LiberationSansBoldWidths,\n baseMapping: LiberationSansBoldMapping,\n metrics: HelveticaBoldMetrics,\n };\n t[\"Helvetica-Italic\"] = {\n name: \"LiberationSans-Italic\",\n factors: HelveticaItalicFactors,\n baseWidths: LiberationSansItalicWidths,\n baseMapping: LiberationSansItalicMapping,\n metrics: HelveticaItalicMetrics,\n };\n t[\"Helvetica-BoldItalic\"] = {\n name: \"LiberationSans-BoldItalic\",\n factors: HelveticaBoldItalicFactors,\n baseWidths: LiberationSansBoldItalicWidths,\n baseMapping: LiberationSansBoldItalicMapping,\n metrics: HelveticaBoldItalicMetrics,\n };\n});\n\nfunction getXfaFontName(name) {\n const fontName = normalizeFontName(name);\n const fontMap = getXFAFontMap();\n return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n const info = getXfaFontName(name);\n if (!info) {\n return null;\n }\n\n const { baseWidths, baseMapping, factors } = info;\n let rescaledBaseWidths;\n if (!factors) {\n rescaledBaseWidths = baseWidths;\n } else {\n rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n }\n\n let currentCode = -2;\n let currentArray;\n\n // Widths array for composite font is:\n // CharCode1 [10, 20, 30] ...\n // which means:\n // - CharCode1 has a width equal to 10\n // - CharCode1+1 has a width equal to 20\n // - CharCode1+2 has a width equal to 30\n //\n // The baseMapping array contains a map for glyph index to unicode.\n // So from baseMapping we'll get sorted unicodes and their positions\n // (i.e. glyph indices) and then we put widths in an array for the\n // the consecutive unicodes.\n const newWidths = [];\n for (const [unicode, glyphIndex] of baseMapping\n .map(\n (charUnicode, index) => [\n charUnicode,\n index,\n ] /* collect unicode and glyph index */\n )\n .sort(\n ([unicode1], [unicode2]) =>\n unicode1 - unicode2 /* order by unicode only */\n )) {\n if (unicode === -1) {\n continue;\n }\n\n if (unicode === currentCode + 1) {\n currentArray.push(rescaledBaseWidths[glyphIndex]);\n currentCode += 1;\n } else {\n currentCode = unicode;\n currentArray = [rescaledBaseWidths[glyphIndex]];\n newWidths.push(unicode, currentArray);\n }\n }\n\n return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n const widths = getXfaFontWidths(name);\n const dict = new Dict(null);\n dict.set(\"BaseFont\", Name.get(name));\n dict.set(\"Type\", Name.get(\"Font\"));\n dict.set(\"Subtype\", Name.get(\"CIDFontType2\"));\n dict.set(\"Encoding\", Name.get(\"Identity-H\"));\n dict.set(\"CIDToGIDMap\", Name.get(\"Identity\"));\n dict.set(\"W\", widths);\n dict.set(\"FirstChar\", widths[0]);\n dict.set(\"LastChar\", widths.at(-2) + widths.at(-1).length - 1);\n const descriptor = new Dict(null);\n dict.set(\"FontDescriptor\", descriptor);\n const systemInfo = new Dict(null);\n systemInfo.set(\"Ordering\", \"Identity\");\n systemInfo.set(\"Registry\", \"Adobe\");\n systemInfo.set(\"Supplement\", 0);\n dict.set(\"CIDSystemInfo\", systemInfo);\n\n return dict;\n}\n\nexport { getXfaFontDict, getXfaFontName };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as calibrib.ttf.\nconst CalibriBoldFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\n 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\n 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\n 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\n 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\n 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\n 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\n 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\n 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\n 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\n 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\n 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\n 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\n 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\n 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\n 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\n 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\n 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\n 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\n 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\n 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\n 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\n 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\n 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\n 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\n 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\n 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\n 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\n 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\n 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\n 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\n 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\n 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\n 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\n 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\n 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\n 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\n 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\n 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\n 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\n 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\n 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\n 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\n 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\n 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\n 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\n 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\n 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\n 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\n 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as calibriz.ttf.\nconst CalibriBoldItalicFactors = [\n 1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\n 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\n 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\n 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\n 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\n 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\n 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\n 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\n 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\n 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\n 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\n 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\n 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\n 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\n 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\n 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\n 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\n 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\n 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\n 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\n 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\n 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\n 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\n 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\n 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\n 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\n 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\n 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\n 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\n 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\n 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\n 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\n 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\n 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\n 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\n 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\n 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\n 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\n 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\n 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\n 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\n 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\n 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\n 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\n 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\n 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\n 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\n 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\n 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\n 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\n 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\n 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\n 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\n 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as calibrii.ttf.\nconst CalibriItalicFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\n 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\n 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\n 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\n 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\n 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\n 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\n 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\n 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\n 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\n 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\n 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\n 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\n 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\n 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\n 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\n 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\n 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\n 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\n 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\n 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\n 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\n 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\n 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\n 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\n 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\n 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\n 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\n 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\n 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\n 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\n 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\n 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\n 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\n 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\n 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\n 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\n 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\n 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\n 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\n 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\n 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\n 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\n 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\n 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\n 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\n 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as calibri.ttf.\nconst CalibriRegularFactors = [\n 1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\n 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\n 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\n 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\n 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\n 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\n 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\n 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\n 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\n 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\n 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\n 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\n 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\n 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\n 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\n 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\n 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\n 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\n 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\n 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\n 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\n 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\n 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\n 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\n 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\n 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\n 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\n 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\n 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\n 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\n 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\n 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\n 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\n 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\n 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\n 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\n 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\n 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\n 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\n 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\n 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\n 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\n 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\n 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\n 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\n 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\n 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\n 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\n 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\n 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\n 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\n 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\n 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\n 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\n 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\n 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\n 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\n 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\n\nexport {\n CalibriBoldFactors,\n CalibriBoldItalicFactors,\n CalibriBoldItalicMetrics,\n CalibriBoldMetrics,\n CalibriItalicFactors,\n CalibriItalicMetrics,\n CalibriRegularFactors,\n CalibriRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as NimbusSans-Bold.otf.\nconst HelveticaBoldFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\n 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\n 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\n 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\n 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\n 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\n 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\n 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\n 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\n 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\n 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\n 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\n 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\n 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\n 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\n 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\n 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\n 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\n 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\n 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\n 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as NimbusSans-BoldItalic.otf.\nconst HelveticaBoldItalicFactors = [\n 0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\n 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\n 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\n 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\n 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\n 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\n 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\n 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\n 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\n 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\n 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\n 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\n 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\n 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\n 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\n 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\n 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\n 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\n 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\n 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\n 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\n 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\n 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\n 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\n 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\n 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\n 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\n 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\n 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\n 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\n 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\n 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\n 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\n 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\n 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\n 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\n 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\n 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\n 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\n 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\n 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\n 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\n 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\n 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\n 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\n 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\n 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\n 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\n 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\n 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\n 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\n 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as NimbusSans-Italic.otf.\nconst HelveticaItalicFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\n 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\n 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\n 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\n 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\n 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\n 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\n 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\n 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\n 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\n 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\n 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\n 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\n 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\n 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\n 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\n 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\n 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\n 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\n 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\n 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\n 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\n 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\n 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\n 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\n 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\n 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\n 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\n 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as NimbusSans-Regular.otf.\nconst HelveticaRegularFactors = [\n 0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\n 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\n 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\n 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\n 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\n 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\n 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\n 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\n 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\n 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\n 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\n 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\n 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\n 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\n 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\n 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\n 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\n 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\n 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\n 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\n 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\n 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\n 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\n 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\n 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\n 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\n 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\n 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\n 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\n 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\n 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\n 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\n 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\n 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\n 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\n 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\n 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\n 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\n 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\n 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\n 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\n 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\n 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\n 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\n 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\n 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\n 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\n 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\n 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\n 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\n 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\n 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\n 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\n 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\n 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\n 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\n 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\n 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\n 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\n 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\n 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\n 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\n 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n HelveticaBoldFactors,\n HelveticaBoldItalicFactors,\n HelveticaBoldItalicMetrics,\n HelveticaBoldMetrics,\n HelveticaItalicFactors,\n HelveticaItalicMetrics,\n HelveticaRegularFactors,\n HelveticaRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Widths of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\n 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\n 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\n 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\n 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\n 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\n 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\n 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\n 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\n 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\n 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\n 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-Bold.ttf.\nconst LiberationSansBoldMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicWidths = [\n 365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\n 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\n 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\n 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\n 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\n 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\n 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\n 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\n 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\n 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\n 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\n 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\n 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\n 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\n 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\n 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\n 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\n 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\n 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\n 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\n 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\n 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\n 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\n 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\n 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\n 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\n 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\n 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\n 333, 333, 333, 333, 333,\n];\n\n// Char code of glyphs in LiberationSans-BoldItalic.ttf.\nconst LiberationSansBoldItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\n 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\n 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\n 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\n 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\n 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\n 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\n 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\n 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\n 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\n 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\n 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\n 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\n 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Italic.ttf.\nconst LiberationSansItalicMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\n// Widths of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularWidths = [\n 365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\n 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\n 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\n 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\n 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\n 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\n 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\n 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\n 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\n 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\n 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\n 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\n 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\n 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\n 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\n 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\n 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\n 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\n 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\n 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\n 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\n 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\n 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\n 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\n 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\n 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\n 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\n 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\n 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\n 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\n 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\n 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\n 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\n 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\n 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\n 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\n 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\n 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\n 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\n 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\n 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\n 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\n 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\n 324, 316, 328, 398, 285,\n];\n\n// Char code of glyphs in LiberationSans-Regular.ttf.\nconst LiberationSansRegularMapping = [\n -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\n 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\n 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\n 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\n 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\n 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\n 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\n 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\n 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\n 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\n 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\n 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\n 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\n 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\n 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\n 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\n 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\n 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\n 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\n 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\n 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\n 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\n 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\n 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\n 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\n 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\n 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\n 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\n 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\n 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\n 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\n 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\n 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\n 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\n 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\n 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\n 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\n 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\n 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\n 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\n 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\n 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\n 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\n 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n\nexport {\n LiberationSansBoldItalicMapping,\n LiberationSansBoldItalicWidths,\n LiberationSansBoldMapping,\n LiberationSansBoldWidths,\n LiberationSansItalicMapping,\n LiberationSansItalicWidths,\n LiberationSansRegularMapping,\n LiberationSansRegularWidths,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as MyriadPro-Bold.otf.\nconst MyriadProBoldFactors = [\n 1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\n 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\n 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\n 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\n 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\n 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\n 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\n 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\n 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\n 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\n 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\n 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\n 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\n 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\n 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\n 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\n 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\n 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\n 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\n 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\n 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\n 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\n 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\n 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\n 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\n 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\n 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\n 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\n 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\n 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\n 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\n 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\n 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\n 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\n 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\n 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\n 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\n 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\n 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\n 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\n 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\n 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\n 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\n 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\n 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\n 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\n 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\n 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as MyriadPro-BoldIt.otf.\nconst MyriadProBoldItalicFactors = [\n 1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\n 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\n 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\n 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\n 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\n 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\n 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\n 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\n 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\n 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\n 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\n 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\n 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\n 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\n 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\n 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\n 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\n 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\n 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\n 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\n 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\n 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\n 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\n 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\n 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\n 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\n 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\n 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\n 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\n 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\n 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\n 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\n 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\n 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\n 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\n 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\n 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\n 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\n 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\n 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\n 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\n 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\n 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\n 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\n 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\n 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\n 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\n 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\n 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\n 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as MyriadPro-It.otf.\nconst MyriadProItalicFactors = [\n 1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\n 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\n 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\n 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\n 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\n 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\n 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\n 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\n 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\n 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\n 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\n 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\n 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\n 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\n 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\n 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\n 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\n 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\n 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\n 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\n 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\n 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\n 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\n 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\n 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\n 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\n 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\n 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\n 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\n 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\n 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\n 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\n 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\n 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\n 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\n 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\n 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\n 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\n 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\n 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\n 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\n 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\n 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\n 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\n 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\n 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\n 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\n 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\n 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as MyriadPro-Regular.otf.\nconst MyriadProRegularFactors = [\n 1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\n 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\n 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\n 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\n 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\n 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\n 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\n 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\n 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\n 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\n 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\n 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\n 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\n 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\n 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\n 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\n 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\n 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\n 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\n 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\n 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\n 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\n 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\n 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\n 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\n 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\n 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\n 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\n 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\n 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\n 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\n 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\n 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\n 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\n 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\n 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\n 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\n 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\n 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\n 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\n 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\n 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\n 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\n 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\n 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\n 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\n 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\n 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\n 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\n 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\n 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1,\n];\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\n\nexport {\n MyriadProBoldFactors,\n MyriadProBoldItalicFactors,\n MyriadProBoldItalicMetrics,\n MyriadProBoldMetrics,\n MyriadProItalicFactors,\n MyriadProItalicMetrics,\n MyriadProRegularFactors,\n MyriadProRegularMetrics,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Factors to rescale LiberationSans-Bold.ttf to have the same\n// metrics as segoeuib.ttf.\nconst SegoeuiBoldFactors = [\n 1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\n 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\n 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\n 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\n 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\n 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\n 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\n 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\n 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\n 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\n 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\n 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\n 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\n 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\n 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\n 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\n 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\n 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\n 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\n 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\n 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\n 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\n 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\n 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\n 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\n 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\n 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\n 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\n 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\n 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\n 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\n 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\n 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\n 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\n 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\n 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\n 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\n 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\n 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\n 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\n 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\n 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\n 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\n 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\n 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\n 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\n 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\n 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\n 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\n 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-BoldItalic.ttf to have the same\n// metrics as segoeuiz.ttf.\nconst SegoeuiBoldItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\n 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\n 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\n 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\n 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\n 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\n 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\n 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\n 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\n 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\n 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\n 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\n 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\n 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\n 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\n 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\n 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\n 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\n 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\n 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\n 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\n 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\n 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\n 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\n 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\n 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\n 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\n 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\n 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\n 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\n 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\n 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\n 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\n 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\n 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\n 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\n 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\n 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\n 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\n 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\n 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\n 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\n 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\n 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\n 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\n 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\n 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\n 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\n 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\n 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\n 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\n 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\n 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\n 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\n 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\n 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\n 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Italic.ttf to have the same\n// metrics as segoeuii.ttf.\nconst SegoeuiItalicFactors = [\n 1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\n 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\n 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\n 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\n 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\n 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\n 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\n 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\n 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\n 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\n 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\n 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\n 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\n 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\n 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\n 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\n 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\n 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\n 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\n 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\n 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\n 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\n 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\n 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\n 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\n 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\n 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\n 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\n 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\n 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\n 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\n 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\n 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\n 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\n 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\n 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\n 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\n 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\n 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\n 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\n 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\n 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\n 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\n 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\n 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\n 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\n 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\n 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\n 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\n 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\n 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\n 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\n 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\n 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\n 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\n 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\n 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\n// Factors to rescale LiberationSans-Regular.ttf to have the same\n// metrics as segoeui.ttf.\nconst SegoeuiRegularFactors = [\n 1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\n 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\n 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\n 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\n 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\n 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\n 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\n 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\n 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\n 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\n 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\n 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\n 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\n 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\n 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\n 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\n 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\n 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\n 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\n 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\n 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\n 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\n 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\n 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\n 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\n 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\n 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\n 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\n 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\n 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\n 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\n 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\n 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\n 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\n 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\n 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\n 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\n 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\n 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\n 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\n 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\n 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\n 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\n 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\n 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\n 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\n 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\n 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\n 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\n 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\n 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\n 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\n 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\n 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\n 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\n 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\n 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\n 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\n 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\n\nexport {\n SegoeuiBoldFactors,\n SegoeuiBoldItalicFactors,\n SegoeuiBoldItalicMetrics,\n SegoeuiBoldMetrics,\n SegoeuiItalicFactors,\n SegoeuiItalicMetrics,\n SegoeuiRegularFactors,\n SegoeuiRegularMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref } from \"./primitives.js\";\nimport {\n FeatureTest,\n FormatError,\n info,\n shadow,\n unreachable,\n} from \"../shared/util.js\";\nimport { PostScriptLexer, PostScriptParser } from \"./ps_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { LocalFunctionCache } from \"./image_utils.js\";\n\nclass PDFFunctionFactory {\n constructor({ xref, isEvalSupported = true }) {\n this.xref = xref;\n this.isEvalSupported = isEvalSupported !== false;\n }\n\n create(fn) {\n const cachedFunction = this.getCached(fn);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parse({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fn, parsedFunction);\n\n return parsedFunction;\n }\n\n createFromArray(fnObj) {\n const cachedFunction = this.getCached(fnObj);\n if (cachedFunction) {\n return cachedFunction;\n }\n const parsedFunction = PDFFunction.parseArray({\n xref: this.xref,\n isEvalSupported: this.isEvalSupported,\n fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\n });\n\n // Attempt to cache the parsed Function, by reference.\n this._cache(fnObj, parsedFunction);\n\n return parsedFunction;\n }\n\n getCached(cacheKey) {\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n const localFunction = this._localFunctionCache.getByRef(fnRef);\n if (localFunction) {\n return localFunction;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _cache(cacheKey, parsedFunction) {\n if (!parsedFunction) {\n throw new Error(\n 'PDFFunctionFactory._cache - expected \"parsedFunction\" argument.'\n );\n }\n let fnRef;\n if (cacheKey instanceof Ref) {\n fnRef = cacheKey;\n } else if (cacheKey instanceof Dict) {\n fnRef = cacheKey.objId;\n } else if (cacheKey instanceof BaseStream) {\n fnRef = cacheKey.dict && cacheKey.dict.objId;\n }\n if (fnRef) {\n this._localFunctionCache.set(/* name = */ null, fnRef, parsedFunction);\n }\n }\n\n /**\n * @private\n */\n get _localFunctionCache() {\n return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n }\n}\n\nfunction toNumberArray(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n const length = arr.length;\n for (let i = 0; i < length; i++) {\n if (typeof arr[i] !== \"number\") {\n // Non-number is found -- convert all items to numbers.\n const result = new Array(length);\n for (let j = 0; j < length; j++) {\n result[j] = +arr[j];\n }\n return result;\n }\n }\n return arr;\n}\n\nclass PDFFunction {\n static getSampleArray(size, outputSize, bps, stream) {\n let i, ii;\n let length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n const array = new Array(length);\n let codeSize = 0;\n let codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n const sampleMul = 1.0 / (2.0 ** bps - 1);\n\n const strBytes = stream.getBytes((length * bps + 7) / 8);\n let strIdx = 0;\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n }\n\n static parse({ xref, isEvalSupported, fn }) {\n const dict = fn.dict || fn;\n const typeNum = dict.get(\"FunctionType\");\n\n switch (typeNum) {\n case 0:\n return this.constructSampled({ xref, isEvalSupported, fn, dict });\n case 1:\n break;\n case 2:\n return this.constructInterpolated({ xref, isEvalSupported, dict });\n case 3:\n return this.constructStiched({ xref, isEvalSupported, dict });\n case 4:\n return this.constructPostScript({ xref, isEvalSupported, fn, dict });\n }\n throw new FormatError(\"Unknown type of function\");\n }\n\n static parseArray({ xref, isEvalSupported, fnObj }) {\n if (!Array.isArray(fnObj)) {\n // not an array -- parsing as regular function\n return this.parse({ xref, isEvalSupported, fn: fnObj });\n }\n\n const fnArray = [];\n for (const fn of fnObj) {\n fnArray.push(\n this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fn) })\n );\n }\n return function (src, srcOffset, dest, destOffset) {\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n }\n\n static constructSampled({ xref, isEvalSupported, fn, dict }) {\n function toMultiArray(arr) {\n const inputLength = arr.length;\n const out = [];\n let index = 0;\n for (let i = 0; i < inputLength; i += 2) {\n out[index++] = [arr[i], arr[i + 1]];\n }\n return out;\n }\n // See chapter 3, page 109 of the PDF reference\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n }\n\n let domain = toNumberArray(dict.getArray(\"Domain\"));\n let range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain || !range) {\n throw new FormatError(\"No domain or range\");\n }\n\n const inputSize = domain.length / 2;\n const outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n const size = toNumberArray(dict.getArray(\"Size\"));\n const bps = dict.get(\"BitsPerSample\");\n const order = dict.get(\"Order\") || 1;\n if (order !== 1) {\n // No description how cubic spline interpolation works in PDF32000:2008\n // As in poppler, ignoring order, linear interpolation may work as good\n info(\"No support for cubic spline interpolation: \" + order);\n }\n\n let encode = toNumberArray(dict.getArray(\"Encode\"));\n if (!encode) {\n encode = [];\n for (let i = 0; i < inputSize; ++i) {\n encode.push([0, size[i] - 1]);\n }\n } else {\n encode = toMultiArray(encode);\n }\n\n let decode = toNumberArray(dict.getArray(\"Decode\"));\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n const samples = this.getSampleArray(size, outputSize, bps, fn);\n // const mask = 2 ** bps - 1;\n\n return function constructSampledFn(src, srcOffset, dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n const cubeVertices = 1 << inputSize;\n const cubeN = new Float64Array(cubeVertices);\n const cubeVertex = new Uint32Array(cubeVertices);\n let i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n let k = outputSize,\n pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < inputSize; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n const domain_2i = domain[i][0];\n const domain_2i_1 = domain[i][1];\n const xi = Math.min(\n Math.max(src[srcOffset + i], domain_2i),\n domain_2i_1\n );\n\n // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n // Encode_2i, Encode_2i+1)\n let e = interpolate(\n xi,\n domain_2i,\n domain_2i_1,\n encode[i][0],\n encode[i][1]\n );\n\n // e_i' = min(max(e_i, 0), Size_i - 1)\n const size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n\n // Adjusting the cube: N and vertex sample index\n const e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n const n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n const n1 = e - e0; // (e - e0) / (e1 - e0);\n const offset0 = e0 * k;\n const offset1 = offset0 + k; // e1 * k\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < outputSize; ++j) {\n // Sum all cube vertices' samples portions\n let rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n // Decode_2j, Decode_2j+1)\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n // y_j = min(max(r_j, range_2j), range_2j+1)\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n }\n };\n }\n\n static constructInterpolated({ xref, isEvalSupported, dict }) {\n const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n const n = dict.get(\"N\");\n\n const diff = [];\n for (let i = 0, ii = c0.length; i < ii; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n const length = diff.length;\n\n return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n for (let j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + x * diff[j];\n }\n };\n }\n\n static constructStiched({ xref, isEvalSupported, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n if (!domain) {\n throw new FormatError(\"No domain\");\n }\n\n const inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError(\"Bad domain for stiched function\");\n }\n\n const fns = [];\n for (const fn of dict.get(\"Functions\")) {\n fns.push(this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fn) }));\n }\n\n const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n const encode = toNumberArray(dict.getArray(\"Encode\"));\n const tmpBuf = new Float32Array(1);\n\n return function constructStichedFn(src, srcOffset, dest, destOffset) {\n const clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n return v;\n };\n\n // clip to domain\n const v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n const length = bounds.length;\n let i;\n for (i = 0; i < length; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n let dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n let dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n const rmin = encode[2 * i];\n const rmax = encode[2 * i + 1];\n\n // Prevent the value from becoming NaN as a result\n // of division by zero (fixes issue6113.pdf).\n tmpBuf[0] =\n dmin === dmax\n ? rmin\n : rmin + ((v - dmin) * (rmax - rmin)) / (dmax - dmin);\n\n // call the appropriate function\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n }\n\n static constructPostScript({ xref, isEvalSupported, fn, dict }) {\n const domain = toNumberArray(dict.getArray(\"Domain\"));\n const range = toNumberArray(dict.getArray(\"Range\"));\n\n if (!domain) {\n throw new FormatError(\"No domain.\");\n }\n\n if (!range) {\n throw new FormatError(\"No range.\");\n }\n\n const lexer = new PostScriptLexer(fn);\n const parser = new PostScriptParser(lexer);\n const code = parser.parse();\n\n if (isEvalSupported && FeatureTest.isEvalSupported) {\n const compiled = new PostScriptCompiler().compile(code, domain, range);\n if (compiled) {\n // Compiled function consists of simple expressions such as addition,\n // subtraction, Math.max, and also contains 'var' and 'return'\n // statements. See the generation in the PostScriptCompiler below.\n // eslint-disable-next-line no-new-func\n return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n }\n }\n info(\"Unable to compile PS function\");\n\n const numOutputs = range.length >> 1;\n const numInputs = domain.length >> 1;\n const evaluator = new PostScriptEvaluator(code);\n // Cache the values for a big speed up, the cache size is limited though\n // since the number of possible values can be huge from a PS function.\n const cache = Object.create(null);\n // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n // seen in our tests.\n const MAX_CACHE_SIZE = 2048 * 4;\n let cache_available = MAX_CACHE_SIZE;\n const tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n let i, value;\n let key = \"\";\n const input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + \"_\";\n }\n\n const cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n const output = new Float32Array(numOutputs);\n const stack = evaluator.execute(input);\n const stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n let bound = range[i * 2];\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n if (value > bound) {\n value = bound;\n }\n }\n output[i] = value;\n }\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n dest.set(output, destOffset);\n };\n }\n}\n\nfunction isPDFFunction(v) {\n let fnDict;\n if (typeof v !== \"object\") {\n return false;\n } else if (v instanceof Dict) {\n fnDict = v;\n } else if (v instanceof BaseStream) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n static get MAX_STACK_SIZE() {\n return shadow(this, \"MAX_STACK_SIZE\", 100);\n }\n\n constructor(initialStack) {\n this.stack = initialStack ? Array.from(initialStack) : [];\n }\n\n push(value) {\n if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n this.stack.push(value);\n }\n\n pop() {\n if (this.stack.length <= 0) {\n throw new Error(\"PostScript function stack underflow.\");\n }\n return this.stack.pop();\n }\n\n copy(n) {\n if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n throw new Error(\"PostScript function stack overflow.\");\n }\n const stack = this.stack;\n for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n }\n\n index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n }\n\n // rotate the last n stack elements p times\n roll(n, p) {\n const stack = this.stack;\n const l = stack.length - n;\n const r = stack.length - 1;\n const c = l + (p - Math.floor(p / n) * n);\n\n for (let i = l, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = l, j = c - 1; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n for (let i = c, j = r; i < j; i++, j--) {\n const t = stack[i];\n stack[i] = stack[j];\n stack[j] = t;\n }\n }\n}\n\nclass PostScriptEvaluator {\n constructor(operators) {\n this.operators = operators;\n }\n\n execute(initialStack) {\n const stack = new PostScriptStack(initialStack);\n let counter = 0;\n const operators = this.operators;\n const length = operators.length;\n let operator, a, b;\n while (counter < length) {\n operator = operators[counter++];\n if (typeof operator === \"number\") {\n // Operator is really an operand and should be pushed to the stack.\n stack.push(operator);\n continue;\n }\n switch (operator) {\n // non standard ps operators\n case \"jz\": // jump if false\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case \"j\": // jump\n a = stack.pop();\n counter = a;\n break;\n\n // all ps operators in alphabetical order (excluding if/ifelse)\n case \"abs\":\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case \"add\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n case \"and\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n break;\n case \"atan\":\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n case \"bitshift\":\n b = stack.pop();\n a = stack.pop();\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n break;\n case \"ceiling\":\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n case \"copy\":\n a = stack.pop();\n stack.copy(a);\n break;\n case \"cos\":\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n case \"cvi\":\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case \"cvr\":\n // noop\n break;\n case \"div\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n case \"dup\":\n stack.copy(1);\n break;\n case \"eq\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n case \"exch\":\n stack.roll(2, 1);\n break;\n case \"exp\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a ** b);\n break;\n case \"false\":\n stack.push(false);\n break;\n case \"floor\":\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n case \"ge\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n case \"gt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n case \"idiv\":\n b = stack.pop();\n a = stack.pop();\n stack.push((a / b) | 0);\n break;\n case \"index\":\n a = stack.pop();\n stack.index(a);\n break;\n case \"le\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n case \"ln\":\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n case \"log\":\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n case \"lt\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n case \"mod\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n case \"mul\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n case \"ne\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n case \"neg\":\n a = stack.pop();\n stack.push(-a);\n break;\n case \"not\":\n a = stack.pop();\n if (typeof a === \"boolean\") {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n break;\n case \"or\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n break;\n case \"pop\":\n stack.pop();\n break;\n case \"roll\":\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n case \"round\":\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n case \"sin\":\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n case \"sqrt\":\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case \"sub\":\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n case \"true\":\n stack.push(true);\n break;\n case \"truncate\":\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n case \"xor\":\n b = stack.pop();\n a = stack.pop();\n if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n break;\n default:\n throw new FormatError(`Unknown operator ${operator}`);\n }\n }\n return stack.stack;\n }\n}\n\nclass AstNode {\n constructor(type) {\n this.type = type;\n }\n\n visit(visitor) {\n unreachable(\"abstract method\");\n }\n}\n\nclass AstArgument extends AstNode {\n constructor(index, min, max) {\n super(\"args\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitArgument(this);\n }\n}\n\nclass AstLiteral extends AstNode {\n constructor(number) {\n super(\"literal\");\n this.number = number;\n this.min = number;\n this.max = number;\n }\n\n visit(visitor) {\n visitor.visitLiteral(this);\n }\n}\n\nclass AstBinaryOperation extends AstNode {\n constructor(op, arg1, arg2, min, max) {\n super(\"binary\");\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitBinaryOperation(this);\n }\n}\n\nclass AstMin extends AstNode {\n constructor(arg, max) {\n super(\"max\");\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitMin(this);\n }\n}\n\nclass AstVariable extends AstNode {\n constructor(index, min, max) {\n super(\"var\");\n this.index = index;\n this.min = min;\n this.max = max;\n }\n\n visit(visitor) {\n visitor.visitVariable(this);\n }\n}\n\nclass AstVariableDefinition extends AstNode {\n constructor(variable, arg) {\n super(\"definition\");\n this.variable = variable;\n this.arg = arg;\n }\n\n visit(visitor) {\n visitor.visitVariableDefinition(this);\n }\n}\n\nclass ExpressionBuilderVisitor {\n constructor() {\n this.parts = [];\n }\n\n visitArgument(arg) {\n this.parts.push(\n \"Math.max(\",\n arg.min,\n \", Math.min(\",\n arg.max,\n \", src[srcOffset + \",\n arg.index,\n \"]))\"\n );\n }\n\n visitVariable(variable) {\n this.parts.push(\"v\", variable.index);\n }\n\n visitLiteral(literal) {\n this.parts.push(literal.number);\n }\n\n visitBinaryOperation(operation) {\n this.parts.push(\"(\");\n operation.arg1.visit(this);\n this.parts.push(\" \", operation.op, \" \");\n operation.arg2.visit(this);\n this.parts.push(\")\");\n }\n\n visitVariableDefinition(definition) {\n this.parts.push(\"var \");\n definition.variable.visit(this);\n this.parts.push(\" = \");\n definition.arg.visit(this);\n this.parts.push(\";\");\n }\n\n visitMin(max) {\n this.parts.push(\"Math.min(\");\n max.arg.visit(this);\n this.parts.push(\", \", max.max, \")\");\n }\n\n toString() {\n return this.parts.join(\"\");\n }\n}\n\nfunction buildAddOperation(num1, num2) {\n if (num2.type === \"literal\" && num2.number === 0) {\n // optimization: second operand is 0\n return num1;\n }\n if (num1.type === \"literal\" && num1.number === 0) {\n // optimization: first operand is 0\n return num2;\n }\n if (num2.type === \"literal\" && num1.type === \"literal\") {\n // optimization: operands operand are literals\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation(\n \"+\",\n num1,\n num2,\n num1.min + num2.min,\n num1.max + num2.max\n );\n}\n\nfunction buildMulOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num2.number === 1) {\n return num1; // and it's 1\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === \"literal\") {\n // optimization: first operands is a literal...\n if (num1.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num1.number === 1) {\n return num2; // and it's 1\n }\n }\n const min = Math.min(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n const max = Math.max(\n num1.min * num2.min,\n num1.min * num2.max,\n num1.max * num2.min,\n num1.max * num2.max\n );\n return new AstBinaryOperation(\"*\", num1, num2, min, max);\n}\n\nfunction buildSubOperation(num1, num2) {\n if (num2.type === \"literal\") {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return num1; // ... and it's 0\n } else if (num1.type === \"literal\") {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (\n num2.type === \"binary\" &&\n num2.op === \"-\" &&\n num1.type === \"literal\" &&\n num1.number === 1 &&\n num2.arg1.type === \"literal\" &&\n num2.arg1.number === 1\n ) {\n // optimization for case: 1 - (1 - x)\n return num2.arg2;\n }\n return new AstBinaryOperation(\n \"-\",\n num1,\n num2,\n num1.min - num2.max,\n num1.max - num2.min\n );\n}\n\nfunction buildMinOperation(num1, max) {\n if (num1.min >= max) {\n // optimization: num1 min value is not less than required max\n return new AstLiteral(max); // just returning max\n } else if (num1.max <= max) {\n // optimization: num1 max value is not greater than required max\n return num1; // just returning an argument\n }\n return new AstMin(num1, max);\n}\n\n// Most of the PDFs functions consist of simple operations such as:\n// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nclass PostScriptCompiler {\n compile(code, domain, range) {\n const stack = [];\n const instructions = [];\n const inputSize = domain.length >> 1,\n outputSize = range.length >> 1;\n let lastRegister = 0;\n let n, j;\n let num1, num2, ast1, ast2, tmpVar, item;\n for (let i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (let i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n if (typeof item === \"number\") {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case \"add\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n case \"cvr\":\n if (stack.length < 1) {\n return null;\n }\n break;\n case \"mul\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n case \"sub\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n case \"exch\":\n if (stack.length < 2) {\n return null;\n }\n ast1 = stack.pop();\n ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n case \"pop\":\n if (stack.length < 1) {\n return null;\n }\n stack.pop();\n break;\n case \"index\":\n if (stack.length < 1) {\n return null;\n }\n num1 = stack.pop();\n if (num1.type !== \"literal\") {\n return null;\n }\n n = num1.number;\n if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n return null;\n }\n ast1 = stack[stack.length - n - 1];\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"dup\":\n if (stack.length < 1) {\n return null;\n }\n if (\n typeof code[i + 1] === \"number\" &&\n code[i + 2] === \"gt\" &&\n code[i + 3] === i + 7 &&\n code[i + 4] === \"jz\" &&\n code[i + 5] === \"pop\" &&\n code[i + 6] === code[i + 1]\n ) {\n // special case of the commands sequence for the min operation\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack.at(-1);\n if (ast1.type === \"literal\" || ast1.type === \"var\") {\n // we don't have to save into intermediate variable a literal or\n // variable.\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case \"roll\":\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n // both roll operands must be numbers\n return null;\n }\n j = num2.number;\n n = num1.number;\n if (\n n <= 0 ||\n !Number.isInteger(n) ||\n !Number.isInteger(j) ||\n stack.length < n\n ) {\n // ... and integers\n return null;\n }\n j = ((j % n) + n) % n;\n if (j === 0) {\n break; // just skipping -- there are nothing to rotate\n }\n stack.push(...stack.splice(stack.length - n, n - j));\n break;\n default:\n return null; // unsupported operator\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n const result = [];\n for (const instruction of instructions) {\n const statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n }\n for (let i = 0, ii = stack.length; i < ii; i++) {\n const expr = stack[i],\n statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n const min = range[i * 2],\n max = range[i * 2 + 1];\n const out = [statementBuilder.toString()];\n if (min > expr.min) {\n out.unshift(\"Math.max(\", min, \", \");\n out.push(\")\");\n }\n if (max < expr.max) {\n out.unshift(\"Math.min(\", max, \", \");\n out.push(\")\");\n }\n out.unshift(\"dest[destOffset + \", i, \"] = \");\n out.push(\";\");\n result.push(out.join(\"\"));\n }\n return result.join(\"\\n\");\n }\n}\n\nexport {\n isPDFFunction,\n PDFFunctionFactory,\n PostScriptCompiler,\n PostScriptEvaluator,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, shadow } from \"../shared/util.js\";\nimport { EOF } from \"./primitives.js\";\nimport { isWhiteSpace } from \"./core_utils.js\";\n\nclass PostScriptParser {\n constructor(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n\n nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n }\n\n accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n }\n\n expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(\n `Unexpected symbol: found ${this.token.type} expected ${type}.`\n );\n }\n\n parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n }\n\n parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n }\n\n parseCondition() {\n // Add two place holders that will be updated later\n const conditionLocation = this.operators.length;\n this.operators.push(null, null);\n\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\n // The true block is right after the 'if' so it just falls through on true\n // else it jumps and skips the true block.\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = \"jz\";\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n const jumpLocation = this.operators.length;\n this.operators.push(null, null);\n const endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n // The jump is added at the end of the true block to skip the false block.\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = \"j\";\n\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = \"jz\";\n } else {\n throw new FormatError(\"PS Function: error parsing conditional.\");\n }\n }\n}\n\nconst PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5,\n};\n\nclass PostScriptToken {\n static get opCache() {\n return shadow(this, \"opCache\", Object.create(null));\n }\n\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n\n static getOperator(op) {\n const opValue = PostScriptToken.opCache[op];\n if (opValue) {\n return opValue;\n }\n return (PostScriptToken.opCache[op] = new PostScriptToken(\n PostScriptTokenTypes.OPERATOR,\n op\n ));\n }\n\n static get LBRACE() {\n return shadow(\n this,\n \"LBRACE\",\n new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\")\n );\n }\n\n static get RBRACE() {\n return shadow(\n this,\n \"RBRACE\",\n new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\")\n );\n }\n\n static get IF() {\n return shadow(\n this,\n \"IF\",\n new PostScriptToken(PostScriptTokenTypes.IF, \"IF\")\n );\n }\n\n static get IFELSE() {\n return shadow(\n this,\n \"IFELSE\",\n new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\")\n );\n }\n}\n\nclass PostScriptLexer {\n constructor(stream) {\n this.stream = stream;\n this.nextChar();\n\n this.strBuf = [];\n }\n\n nextChar() {\n return (this.currentChar = this.stream.getByte());\n }\n\n getToken() {\n let comment = false;\n let ch = this.currentChar;\n\n // skip comments\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n\n if (comment) {\n if (ch === 0x0a || ch === 0x0d) {\n comment = false;\n }\n } else if (ch === /* '%' = */ 0x25) {\n comment = true;\n } else if (!isWhiteSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30: // '0'\n case 0x31: // '1'\n case 0x32: // '2'\n case 0x33: // '3'\n case 0x34: // '4'\n case 0x35: // '5'\n case 0x36: // '6'\n case 0x37: // '7'\n case 0x38: // '8'\n case 0x39: // '9'\n case 0x2b: // '+'\n case 0x2d: // '-'\n case 0x2e: // '.'\n return new PostScriptToken(\n PostScriptTokenTypes.NUMBER,\n this.getNumber()\n );\n case 0x7b: // '{'\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7d: // '}'\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n // operator\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while (\n (ch = this.nextChar()) >= 0 &&\n ((ch >= /* 'A' = */ 0x41 && ch <= /* 'Z' = */ 0x5a) ||\n (ch >= /* 'a' = */ 0x61 && ch <= /* 'z' = */ 0x7a))\n ) {\n strBuf.push(String.fromCharCode(ch));\n }\n const str = strBuf.join(\"\");\n switch (str.toLowerCase()) {\n case \"if\":\n return PostScriptToken.IF;\n case \"ifelse\":\n return PostScriptToken.IFELSE;\n default:\n return PostScriptToken.getOperator(str);\n }\n }\n\n getNumber() {\n let ch = this.currentChar;\n const strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if (\n (ch >= /* '0' = */ 0x30 && ch <= /* '9' = */ 0x39) ||\n ch === /* '-' = */ 0x2d ||\n ch === /* '.' = */ 0x2e\n ) {\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n const value = parseFloat(strBuf.join(\"\"));\n if (isNaN(value)) {\n throw new FormatError(`Invalid floating point number: ${value}`);\n }\n return value;\n }\n}\n\nexport { PostScriptLexer, PostScriptParser };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, shadow, unreachable, warn } from \"../shared/util.js\";\nimport { RefSetCache } from \"./primitives.js\";\n\nclass BaseLocalCache {\n constructor(options) {\n if (this.constructor === BaseLocalCache) {\n unreachable(\"Cannot initialize BaseLocalCache.\");\n }\n this._onlyRefs = (options && options.onlyRefs) === true;\n\n if (!this._onlyRefs) {\n this._nameRefMap = new Map();\n this._imageMap = new Map();\n }\n this._imageCache = new RefSetCache();\n }\n\n getByName(name) {\n if (this._onlyRefs) {\n unreachable(\"Should not call `getByName` method.\");\n }\n const ref = this._nameRefMap.get(name);\n if (ref) {\n return this.getByRef(ref);\n }\n return this._imageMap.get(name) || null;\n }\n\n getByRef(ref) {\n return this._imageCache.get(ref) || null;\n }\n\n set(name, ref, data) {\n unreachable(\"Abstract method `set` called.\");\n }\n}\n\nclass LocalImageCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalImageCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n set(name = null, ref = null, data) {\n if (typeof name !== \"string\" && !ref) {\n throw new Error(\n 'LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.'\n );\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n if (name !== null) {\n // Optional when `ref` is defined.\n this._nameRefMap.set(name, ref);\n }\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalFunctionCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass LocalGStateCache extends BaseLocalCache {\n set(name, ref = null, data) {\n if (typeof name !== \"string\") {\n throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n }\n if (ref) {\n if (this._imageCache.has(ref)) {\n return;\n }\n this._nameRefMap.set(name, ref);\n this._imageCache.put(ref, data);\n return;\n }\n // name\n if (this._imageMap.has(name)) {\n return;\n }\n this._imageMap.set(name, data);\n }\n}\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n constructor(options) {\n super({ onlyRefs: true });\n }\n\n set(name = null, ref, data) {\n if (!ref) {\n throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n this._imageCache.put(ref, data);\n }\n}\n\nclass GlobalImageCache {\n static get NUM_PAGES_THRESHOLD() {\n return shadow(this, \"NUM_PAGES_THRESHOLD\", 2);\n }\n\n static get MIN_IMAGES_TO_CACHE() {\n return shadow(this, \"MIN_IMAGES_TO_CACHE\", 10);\n }\n\n static get MAX_BYTE_SIZE() {\n return shadow(this, \"MAX_BYTE_SIZE\", /* Forty megabytes = */ 40e6);\n }\n\n constructor() {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\n \"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\"\n );\n }\n this._refCache = new RefSetCache();\n this._imageCache = new RefSetCache();\n }\n\n get _byteSize() {\n let byteSize = 0;\n for (const imageData of this._imageCache) {\n byteSize += imageData.byteSize;\n }\n return byteSize;\n }\n\n get _cacheLimitReached() {\n if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n return false;\n }\n if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n return false;\n }\n return true;\n }\n\n shouldCache(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n const numPages = pageIndexSet\n ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1)\n : 1;\n\n if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return false;\n }\n if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n return false;\n }\n return true;\n }\n\n addPageIndex(ref, pageIndex) {\n let pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n pageIndexSet = new Set();\n this._refCache.put(ref, pageIndexSet);\n }\n pageIndexSet.add(pageIndex);\n }\n\n /**\n * PLEASE NOTE: Must be called *after* the `setData` method.\n */\n addByteSize(ref, byteSize) {\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return; // The image data isn't cached (the limit was reached).\n }\n if (imageData.byteSize) {\n return; // The byte-size has already been set.\n }\n imageData.byteSize = byteSize;\n }\n\n getData(ref, pageIndex) {\n const pageIndexSet = this._refCache.get(ref);\n if (!pageIndexSet) {\n return null;\n }\n if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n return null;\n }\n const imageData = this._imageCache.get(ref);\n if (!imageData) {\n return null;\n }\n // Ensure that we keep track of all pages containing the image reference.\n pageIndexSet.add(pageIndex);\n\n return imageData;\n }\n\n setData(ref, data) {\n if (!this._refCache.has(ref)) {\n throw new Error(\n 'GlobalImageCache.setData - expected \"addPageIndex\" to have been called.'\n );\n }\n if (this._imageCache.has(ref)) {\n return;\n }\n if (this._cacheLimitReached) {\n warn(\"GlobalImageCache.setData - cache limit reached.\");\n return;\n }\n this._imageCache.put(ref, data);\n }\n\n clear(onlyData = false) {\n if (!onlyData) {\n this._refCache.clear();\n }\n this._imageCache.clear();\n }\n}\n\nexport {\n GlobalImageCache,\n LocalColorSpaceCache,\n LocalFunctionCache,\n LocalGStateCache,\n LocalImageCache,\n LocalTilingPatternCache,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from \"../shared/util.js\";\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// prettier-ignore\nconst baseTypes = [\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\",\n \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\",\n \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\",\n \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\",\n \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\",\n \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\",\n \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\n// prettier-ignore\nconst arabicTypes = [\n \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\",\n \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\",\n \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\",\n \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\",\n \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\",\n \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\",\n \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"\n];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n let j, jj;\n for (j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (let j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (let i = start, j = end - 1; i < j; ++i, --j) {\n const temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n let dir = \"ltr\";\n if (vertical) {\n dir = \"ttb\";\n } else if (!isLTR) {\n dir = \"rtl\";\n }\n return { str, dir };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n let isLTR = true;\n const strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n // Get types and fill arrays\n chars.length = strLength;\n types.length = strLength;\n let numBidi = 0;\n\n let i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n const charCode = str.charCodeAt(i);\n let charType = \"L\";\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = \"R\";\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n charType = \"AL\";\n }\n if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n numBidi++;\n }\n types[i] = charType;\n }\n\n // Detect the bidi method\n // - If there are no rtl characters then no bidi needed\n // - If less than 30% chars are rtl then string is primarily ltr,\n // unless the string is very short.\n // - If more than 30% chars are rtl then string is primarily rtl\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if (numBidi / strLength < 0.3 && strLength > 4) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n const levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n /*\n X1-X10: skip most of this, since we are NOT doing the embeddings.\n */\n const e = isOdd(startLevel) ? \"R\" : \"L\";\n const sor = e;\n const eor = sor;\n\n /*\n W1. Examine each non-spacing mark (NSM) in the level run, and change the\n type of the NSM to the type of the previous character. If the NSM is at the\n start of the level run, it will get the type of sor.\n */\n let lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"NSM\") {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n /*\n W2. Search backwards from each instance of a European number until the\n first strong type (R, L, AL, or sor) is found. If an AL is found, change\n the type of the European number to Arabic number.\n */\n lastType = sor;\n let t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n lastType = t;\n }\n }\n\n /*\n W3. Change all ALs to R.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"AL\") {\n types[i] = \"R\";\n }\n }\n\n /*\n W4. A single European separator between two European numbers changes to a\n European number. A single common separator between two numbers of the same\n type changes to that type:\n */\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n types[i] = \"EN\";\n }\n if (\n types[i] === \"CS\" &&\n (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") &&\n types[i + 1] === types[i - 1]\n ) {\n types[i] = types[i - 1];\n }\n }\n\n /*\n W5. A sequence of European terminators adjacent to European numbers changes\n to all European numbers:\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"EN\") {\n // do before\n for (let j = i - 1; j >= 0; --j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n // do after\n for (let j = i + 1; j < strLength; ++j) {\n if (types[j] !== \"ET\") {\n break;\n }\n types[j] = \"EN\";\n }\n }\n }\n\n /*\n W6. Otherwise, separators and terminators change to Other Neutral:\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n types[i] = \"ON\";\n }\n }\n\n /*\n W7. Search backwards from each instance of a European number until the\n first strong type (R, L, or sor) is found. If an L is found, then change\n the type of the European number to L.\n */\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === \"EN\") {\n types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n } else if (t === \"R\" || t === \"L\") {\n lastType = t;\n }\n }\n\n /*\n N1. A sequence of neutrals takes the direction of the surrounding strong\n text if the text on both sides has the same direction. European and Arabic\n numbers are treated as though they were R. Start-of-level-run (sor) and\n end-of-level-run (eor) are used at level run boundaries.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n const end = findUnequal(types, i + 1, \"ON\");\n let before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n let after = eor;\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n if (before !== \"L\") {\n before = \"R\";\n }\n if (after !== \"L\") {\n after = \"R\";\n }\n if (before === after) {\n setValues(types, i, end, before);\n }\n i = end - 1; // reset to end (-1 so next iteration is ok)\n }\n }\n\n /*\n N2. Any remaining neutrals take the embedding direction.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === \"ON\") {\n types[i] = e;\n }\n }\n\n /*\n I1. For all characters with an even (left-to-right) embedding direction,\n those of type R go up one level and those of type AN or EN go up two\n levels.\n I2. For all characters with an odd (right-to-left) embedding direction,\n those of type L, EN or AN go up one level.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === \"R\") {\n levels[i] += 1;\n } else if (t === \"AN\" || t === \"EN\") {\n levels[i] += 2;\n }\n } else {\n // isOdd\n if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n levels[i] += 1;\n }\n }\n }\n\n /*\n L1. On each line, reset the embedding level of the following characters to\n the paragraph embedding level:\n\n segment separators,\n paragraph separators,\n any sequence of whitespace characters preceding a segment separator or\n paragraph separator, and any sequence of white space characters at the end\n of the line.\n */\n\n // don't bother as text is only single line\n\n /*\n L2. From the highest level found in the text to the lowest odd level on\n each line, reverse any contiguous sequence of characters that are at that\n level or higher.\n */\n\n // find highest level & lowest odd level\n let highestLevel = -1;\n let lowestOddLevel = 99;\n let level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n // now reverse between those limits\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n // find segments to reverse\n let start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n /*\n L3. Combining marks applied to a right-to-left base character will at this\n point precede their base character. If the rendering engine expects them to\n follow the base characters in the final display process, then the ordering\n of the marks and the base character must be reversed.\n */\n\n // don't bother for now\n\n /*\n L4. A character that possesses the mirrored property as specified by\n Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n directionality of that character is R.\n */\n\n // don't mirror as characters are already mirrored in the pdf\n\n // Finally, return string\n for (i = 0, ii = chars.length; i < ii; ++i) {\n const ch = chars[i];\n if (ch === \"<\" || ch === \">\") {\n chars[i] = \"\";\n }\n }\n return createBidiText(chars.join(\"\"), isLTR);\n}\n\nexport { bidi };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n return (\n (h1 >>> 0).toString(16).padStart(8, \"0\") +\n (h2 >>> 0).toString(16).padStart(8, \"0\")\n );\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ImageKind,\n OPS,\n RenderingIntentFlag,\n shadow,\n warn,\n} from \"../shared/util.js\";\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n let state = parentState;\n for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n const item = pattern[i];\n state = state[item] || (state[item] = []);\n }\n state[pattern.at(-1)] = {\n checkFn,\n iterateFn,\n processFn,\n };\n}\n\nconst InitialState = [];\n\n// This replaces (save, transform, paintInlineImageXObject, restore)+\n// sequences with one |paintInlineImageXObjectGroup| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n null,\n function iterateInlineImageGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintInlineImageXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n },\n function foundInlineImageGroup(context, i) {\n const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n const MAX_WIDTH = 1000;\n const IMAGE_PADDING = 1;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIIXO = curr - 1;\n\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\n );\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // assuming that heights of those image is too small (~1 pixel)\n // packing as much as possible by lines\n let maxX = 0;\n const map = [];\n let maxLineHeight = 0;\n let currentX = IMAGE_PADDING,\n currentY = IMAGE_PADDING;\n for (let q = 0; q < count; q++) {\n const transform = argsArray[iFirstTransform + (q << 2)];\n const img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n // starting new line\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX,\n y: currentY,\n w: img.width,\n h: img.height,\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n const imgData = new Uint8Array(imgWidth * imgHeight * 4);\n const imgRowSize = imgWidth << 2;\n for (let q = 0; q < count; q++) {\n const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n const rowSize = map[q].w << 2;\n let dataOffset = 0;\n let offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (let k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [\n {\n width: imgWidth,\n height: imgHeight,\n kind: ImageKind.RGBA_32BPP,\n data: imgData,\n },\n map,\n ]);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageMaskXObject, restore)+\n// sequences with one |paintImageMaskXObjectGroup| or one\n// |paintImageMaskXObjectRepeat| operation.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n null,\n function iterateImageMaskGroup(context, i) {\n const fnArray = context.fnArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n return fnArray[i] === OPS.transform;\n case 2:\n return fnArray[i] === OPS.paintImageMaskXObject;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n },\n function foundImageMaskGroup(context, i) {\n const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIMXO = curr - 1;\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n let count = Math.floor((i - iFirstSave) / 4);\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n let isSameImage = false;\n let iTransform, transformArgs;\n const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0],\n firstTransformArg1 = argsArray[iFirstTransform][1],\n firstTransformArg2 = argsArray[iFirstTransform][2],\n firstTransformArg3 = argsArray[iFirstTransform][3];\n\n if (firstTransformArg1 === firstTransformArg2) {\n isSameImage = true;\n iTransform = iFirstTransform + 4;\n let iPIMXO = iFirstPIMXO + 4;\n for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (\n argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n transformArgs[0] !== firstTransformArg0 ||\n transformArgs[1] !== firstTransformArg1 ||\n transformArgs[2] !== firstTransformArg2 ||\n transformArgs[3] !== firstTransformArg3\n ) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break; // different image or transform\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n const positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, [\n firstPIMXOArg0,\n firstTransformArg0,\n firstTransformArg1,\n firstTransformArg2,\n firstTransformArg3,\n positions,\n ]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n const images = [];\n for (let q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({\n data: maskParams.data,\n width: maskParams.width,\n height: maskParams.height,\n interpolate: maskParams.interpolate,\n count: maskParams.count,\n transform: transformArgs,\n });\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (save, transform, paintImageXObject, restore)+ sequences\n// with one paintImageXObjectRepeat operation, if the |transform| and\n// |paintImageXObjectRepeat| ops are appropriate.\naddState(\n InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n const argsArray = context.argsArray;\n const iFirstTransform = context.iCurr - 2;\n return (\n argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\n );\n },\n function iterateImageGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 3;\n const pos = (i - iFirstSave) % 4;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.save;\n case 1:\n if (fnArray[i] !== OPS.transform) {\n return false;\n }\n const iFirstTransform = context.iCurr - 2;\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n if (\n argsArray[i][0] !== firstTransformArg0 ||\n argsArray[i][1] !== 0 ||\n argsArray[i][2] !== 0 ||\n argsArray[i][3] !== firstTransformArg3\n ) {\n return false; // transforms don't match\n }\n return true;\n case 2:\n if (fnArray[i] !== OPS.paintImageXObject) {\n return false;\n }\n const iFirstPIXO = context.iCurr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n if (argsArray[i][0] !== firstPIXOArg0) {\n return false; // images don't match\n }\n return true;\n case 3:\n return fnArray[i] === OPS.restore;\n }\n throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_IMAGES_IN_BLOCK = 3;\n const MAX_IMAGES_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstSave = curr - 3;\n const iFirstTransform = curr - 2;\n const iFirstPIXO = curr - 1;\n const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n const firstTransformArg0 = argsArray[iFirstTransform][0];\n const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n const count = Math.min(\n Math.floor((i - iFirstSave) / 4),\n MAX_IMAGES_IN_BLOCK\n );\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i - ((i - iFirstSave) % 4);\n }\n\n // Extract the (x,y) positions from all of the matching transforms.\n const positions = new Float32Array(count * 2);\n let iTransform = iFirstTransform;\n for (let q = 0; q < count; q++, iTransform += 4) {\n const transformArgs = argsArray[iTransform];\n positions[q << 1] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n const args = [\n firstPIXOArg0,\n firstTransformArg0,\n firstTransformArg3,\n positions,\n ];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n\n return iFirstSave + 1;\n }\n);\n\n// This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n// sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n// sequences, if the font for each one is the same.\naddState(\n InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n null,\n function iterateShowTextGroup(context, i) {\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const iFirstSave = context.iCurr - 4;\n const pos = (i - iFirstSave) % 5;\n switch (pos) {\n case 0:\n return fnArray[i] === OPS.beginText;\n case 1:\n return fnArray[i] === OPS.setFont;\n case 2:\n return fnArray[i] === OPS.setTextMatrix;\n case 3:\n if (fnArray[i] !== OPS.showText) {\n return false;\n }\n const iFirstSetFont = context.iCurr - 3;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n if (\n argsArray[i][0] !== firstSetFontArg0 ||\n argsArray[i][1] !== firstSetFontArg1\n ) {\n return false; // fonts don't match\n }\n return true;\n case 4:\n return fnArray[i] === OPS.endText;\n }\n throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n },\n function (context, i) {\n const MIN_CHARS_IN_BLOCK = 3;\n const MAX_CHARS_IN_BLOCK = 1000;\n\n const fnArray = context.fnArray,\n argsArray = context.argsArray;\n const curr = context.iCurr;\n const iFirstBeginText = curr - 4;\n const iFirstSetFont = curr - 3;\n const iFirstSetTextMatrix = curr - 2;\n const iFirstShowText = curr - 1;\n const iFirstEndText = curr;\n const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n let count = Math.min(\n Math.floor((i - iFirstBeginText) / 5),\n MAX_CHARS_IN_BLOCK\n );\n if (count < MIN_CHARS_IN_BLOCK) {\n return i - ((i - iFirstBeginText) % 5);\n }\n\n // If the preceding quintet is (<something>, setFont, setTextMatrix,\n // showText, endText), include that as well. (E.g. <something> might be\n // |dependency|.)\n let iFirst = iFirstBeginText;\n if (\n iFirstBeginText >= 4 &&\n fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\n ) {\n count++;\n iFirst -= 5;\n }\n\n // Remove (endText, beginText, setFont) trios.\n let iEndText = iFirst + 4;\n for (let q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n }\n);\n\nclass NullOptimizer {\n constructor(queue) {\n this.queue = queue;\n }\n\n _optimize() {}\n\n push(fn, args) {\n this.queue.fnArray.push(fn);\n this.queue.argsArray.push(args);\n this._optimize();\n }\n\n flush() {}\n\n reset() {}\n}\n\nclass QueueOptimizer extends NullOptimizer {\n constructor(queue) {\n super(queue);\n this.state = null;\n this.context = {\n iCurr: 0,\n fnArray: queue.fnArray,\n argsArray: queue.argsArray,\n };\n this.match = null;\n this.lastProcessed = 0;\n }\n\n _optimize() {\n // Process new fnArray item(s) chunk.\n const fnArray = this.queue.fnArray;\n let i = this.lastProcessed,\n ii = fnArray.length;\n let state = this.state;\n let match = this.match;\n if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n // Micro-optimization for the common case: last item is not\n // optimizable, just skipping it.\n this.lastProcessed = ii;\n return;\n }\n\n const context = this.context;\n while (i < ii) {\n if (match) {\n // Already find a block of potentially optimizable items, iterating...\n const iterate = (0, match.iterateFn)(context, i);\n if (iterate) {\n i++;\n continue;\n }\n // Found last items for the block, processing...\n i = (0, match.processFn)(context, i + 1);\n ii = fnArray.length;\n match = null;\n state = null;\n if (i >= ii) {\n break;\n }\n }\n // Find the potentially optimizable items.\n state = (state || InitialState)[fnArray[i]];\n if (!state || Array.isArray(state)) {\n i++;\n continue;\n }\n // Found a start of the block based on addState rules.\n context.iCurr = i;\n i++;\n if (state.checkFn && !(0, state.checkFn)(context)) {\n // Check failed, continue search...\n state = null;\n continue;\n }\n match = state;\n state = null;\n }\n this.state = state;\n this.match = match;\n this.lastProcessed = i;\n }\n\n flush() {\n while (this.match) {\n const length = this.queue.fnArray.length;\n this.lastProcessed = (0, this.match.processFn)(this.context, length);\n this.match = null;\n this.state = null;\n // Repeat optimization until all chunks are exhausted.\n this._optimize();\n }\n }\n\n reset() {\n this.state = null;\n this.match = null;\n this.lastProcessed = 0;\n }\n}\n\nclass OperatorList {\n static get CHUNK_SIZE() {\n return shadow(this, \"CHUNK_SIZE\", 1000);\n }\n\n // Close to chunk size.\n static get CHUNK_SIZE_ABOUT() {\n return shadow(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n }\n\n constructor(intent = 0, streamSink) {\n this._streamSink = streamSink;\n this.fnArray = [];\n this.argsArray = [];\n if (streamSink && !(intent & RenderingIntentFlag.OPLIST)) {\n this.optimizer = new QueueOptimizer(this);\n } else {\n this.optimizer = new NullOptimizer(this);\n }\n this.dependencies = new Set();\n this._totalLength = 0;\n this.weight = 0;\n this._resolved = streamSink ? null : Promise.resolve();\n }\n\n get length() {\n return this.argsArray.length;\n }\n\n get ready() {\n return this._resolved || this._streamSink.ready;\n }\n\n /**\n * @type {number} The total length of the entire operator list, since\n * `this.length === 0` after flushing.\n */\n get totalLength() {\n return this._totalLength + this.length;\n }\n\n addOp(fn, args) {\n this.optimizer.push(fn, args);\n this.weight++;\n if (this._streamSink) {\n if (this.weight >= OperatorList.CHUNK_SIZE) {\n this.flush();\n } else if (\n this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\n (fn === OPS.restore || fn === OPS.endText)\n ) {\n // Heuristic to flush on boundary of restore or endText.\n this.flush();\n }\n }\n }\n\n addImageOps(fn, args, optionalContent) {\n if (optionalContent !== undefined) {\n this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n }\n\n this.addOp(fn, args);\n\n if (optionalContent !== undefined) {\n this.addOp(OPS.endMarkedContent, []);\n }\n }\n\n addDependency(dependency) {\n if (this.dependencies.has(dependency)) {\n return;\n }\n this.dependencies.add(dependency);\n this.addOp(OPS.dependency, [dependency]);\n }\n\n addDependencies(dependencies) {\n for (const dependency of dependencies) {\n this.addDependency(dependency);\n }\n }\n\n addOpList(opList) {\n if (!(opList instanceof OperatorList)) {\n warn('addOpList - ignoring invalid \"opList\" parameter.');\n return;\n }\n for (const dependency of opList.dependencies) {\n this.dependencies.add(dependency);\n }\n for (let i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n }\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length,\n };\n }\n\n get _transfers() {\n const transfers = [];\n const { fnArray, argsArray, length } = this;\n for (let i = 0; i < length; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n const arg = argsArray[i][0]; // First parameter in imgData.\n if (\n !arg.cached &&\n arg.data &&\n arg.data.buffer instanceof ArrayBuffer\n ) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n\n flush(lastChunk = false, separateAnnots = null) {\n this.optimizer.flush();\n const length = this.length;\n this._totalLength += length;\n\n this._streamSink.enqueue(\n {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n separateAnnots,\n length,\n },\n 1,\n this._transfers\n );\n\n this.dependencies.clear();\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n this.weight = 0;\n this.optimizer.reset();\n }\n}\n\nexport { OperatorList };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n FeatureTest,\n FormatError,\n ImageKind,\n info,\n warn,\n} from \"../shared/util.js\";\nimport { applyMaskImageData } from \"../shared/image_utils.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { DecodeStream } from \"./decode_stream.js\";\nimport { JpegStream } from \"./jpeg_stream.js\";\nimport { JpxImage } from \"./jpx.js\";\nimport { Name } from \"./primitives.js\";\n\n/**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\nfunction decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n // Clamp the value to the range\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n return value;\n}\n\n/**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {number} bpc - Number of bits per component.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n const length = w2 * h2;\n let dest;\n if (bpc <= 8) {\n dest = new Uint8Array(length);\n } else if (bpc <= 16) {\n dest = new Uint16Array(length);\n } else {\n dest = new Uint32Array(length);\n }\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let i,\n j,\n py,\n newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n return dest;\n}\n\nclass PDFImage {\n constructor({\n xref,\n res,\n image,\n isInline = false,\n smask = null,\n mask = null,\n isMask = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n this.image = image;\n const dict = image.dict;\n\n const filter = dict.get(\"F\", \"Filter\");\n let filterName;\n if (filter instanceof Name) {\n filterName = filter.name;\n } else if (Array.isArray(filter)) {\n const filterZero = xref.fetchIfRef(filter[0]);\n if (filterZero instanceof Name) {\n filterName = filterZero.name;\n }\n }\n switch (filterName) {\n case \"JPXDecode\":\n const jpxImage = new JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n\n image.width = jpxImage.width;\n image.height = jpxImage.height;\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n break;\n case \"JBIG2Decode\":\n image.bitsPerComponent = 1;\n image.numComps = 1;\n break;\n }\n\n let width = dict.get(\"W\", \"Width\");\n let height = dict.get(\"H\", \"Height\");\n\n if (\n Number.isInteger(image.width) &&\n image.width > 0 &&\n Number.isInteger(image.height) &&\n image.height > 0 &&\n (image.width !== width || image.height !== height)\n ) {\n warn(\n \"PDFImage - using the Width/Height of the image data, \" +\n \"rather than the image dictionary.\"\n );\n width = image.width;\n height = image.height;\n }\n if (width < 1 || height < 1) {\n throw new FormatError(\n `Invalid image width: ${width} or height: ${height}`\n );\n }\n this.width = width;\n this.height = height;\n\n this.interpolate = dict.get(\"I\", \"Interpolate\");\n this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n this.matte = dict.get(\"Matte\") || false;\n\n let bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(\n `Bits per component missing in image: ${this.imageMask}`\n );\n }\n }\n }\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n if (!colorSpace) {\n info(\"JPX images (which do not require color spaces)\");\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get(\"DeviceGray\");\n break;\n case 3:\n colorSpace = Name.get(\"DeviceRGB\");\n break;\n case 4:\n colorSpace = Name.get(\"DeviceCMYK\");\n break;\n default:\n throw new Error(\n `JPX images with ${image.numComps} color components not supported.`\n );\n }\n }\n this.colorSpace = ColorSpace.parse({\n cs: colorSpace,\n xref,\n resources: isInline ? res : null,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray(\"D\", \"Decode\");\n this.needsDecode = false;\n if (\n this.decode &&\n ((this.colorSpace &&\n !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\n (isMask &&\n !ColorSpace.isDefaultDecode(this.decode, /* numComps = */ 1)))\n ) {\n this.needsDecode = true;\n // Do some preprocessing to avoid more math.\n const max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n const dmin = this.decode[i];\n const dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = isIndexed\n ? (dmax - dmin) / max\n : dmax - dmin;\n this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage({\n xref,\n res,\n image: smask,\n isInline,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n } else if (mask) {\n if (mask instanceof BaseStream) {\n const maskDict = mask.dict,\n imageMask = maskDict.get(\"IM\", \"ImageMask\");\n if (!imageMask) {\n warn(\"Ignoring /Mask in image without /ImageMask.\");\n } else {\n this.mask = new PDFImage({\n xref,\n res,\n image: mask,\n isInline,\n isMask: true,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n } else {\n // Color key mask (just an array).\n this.mask = mask;\n }\n }\n }\n\n /**\n * Handles processing of image data and returns the Promise that is resolved\n * with a PDFImage when the image is ready to be used.\n */\n static async buildImage({\n xref,\n res,\n image,\n isInline = false,\n pdfFunctionFactory,\n localColorSpaceCache,\n }) {\n const imageData = image;\n let smaskData = null;\n let maskData = null;\n\n const smask = image.dict.get(\"SMask\");\n const mask = image.dict.get(\"Mask\");\n\n if (smask) {\n if (smask instanceof BaseStream) {\n smaskData = smask;\n } else {\n warn(\"Unsupported /SMask format.\");\n }\n } else if (mask) {\n if (mask instanceof BaseStream || Array.isArray(mask)) {\n maskData = mask;\n } else {\n warn(\"Unsupported /Mask format.\");\n }\n }\n\n return new PDFImage({\n xref,\n res,\n image: imageData,\n isInline,\n smask: smaskData,\n mask: maskData,\n pdfFunctionFactory,\n localColorSpaceCache,\n });\n }\n\n static createRawMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n }) {\n // |imgArray| might not contain full data for every pixel of the mask, so\n // we need to distinguish between |computedLength| and |actualLength|.\n // In particular, if inverseDecode is true, then the array we return must\n // have a length of |computedLength|.\n\n const computedLength = ((width + 7) >> 3) * height;\n const actualLength = imgArray.byteLength;\n const haveFullData = computedLength === actualLength;\n let data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n // imgArray came from a DecodeStream and its data is in an appropriate\n // form, so we can just transfer it.\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8Array(imgArray);\n } else {\n data = new Uint8Array(computedLength);\n data.set(imgArray);\n data.fill(0xff, actualLength);\n }\n\n // If necessary, invert the original mask data (but not any extra we might\n // have added above). It's safe to modify the array -- whether it's the\n // original or a copy, we're about to transfer it anyway, so nothing else\n // in this thread can be relying on its contents.\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] ^= 0xff;\n }\n }\n\n return { data, width, height, interpolate };\n }\n\n static createMask({\n imgArray,\n width,\n height,\n imageIsFromDecodeStream,\n inverseDecode,\n interpolate,\n isOffscreenCanvasSupported = true,\n }) {\n const isSingleOpaquePixel =\n width === 1 &&\n height === 1 &&\n inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\n\n if (isSingleOpaquePixel) {\n return { isSingleOpaquePixel };\n }\n\n if (isOffscreenCanvasSupported && FeatureTest.isOffscreenCanvasSupported) {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n const imgData = ctx.createImageData(width, height);\n applyMaskImageData({\n src: imgArray,\n dest: imgData.data,\n width,\n height,\n inverseDecode,\n });\n\n ctx.putImageData(imgData, 0, 0);\n const bitmap = canvas.transferToImageBitmap();\n\n return {\n data: null,\n width,\n height,\n interpolate,\n bitmap,\n };\n }\n\n // Get the data almost as they're and they'll be decoded\n // just before being drawn.\n return this.createRawMask({\n imgArray,\n width,\n height,\n inverseDecode,\n imageIsFromDecodeStream,\n interpolate,\n });\n }\n\n get drawWidth() {\n return Math.max(\n this.width,\n (this.smask && this.smask.width) || 0,\n (this.mask && this.mask.width) || 0\n );\n }\n\n get drawHeight() {\n return Math.max(\n this.height,\n (this.smask && this.smask.height) || 0,\n (this.mask && this.mask.height) || 0\n );\n }\n\n decodeBuffer(buffer) {\n const bpc = this.bpc;\n const numComps = this.numComps;\n\n const decodeAddends = this.decodeAddends;\n const decodeCoefficients = this.decodeCoefficients;\n const max = (1 << bpc) - 1;\n let i, ii;\n\n if (bpc === 1) {\n // If the buffer needed decode that means it just needs to be inverted.\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!buffer[i];\n }\n return;\n }\n let index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (let j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(\n buffer[index],\n decodeAddends[j],\n decodeCoefficients[j],\n max\n );\n index++;\n }\n }\n }\n\n getComponents(buffer) {\n const bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n const width = this.width;\n const height = this.height;\n const numComps = this.numComps;\n\n const length = width * height * numComps;\n let bufferPos = 0;\n let output;\n if (bpc <= 8) {\n output = new Uint8Array(length);\n } else if (bpc <= 16) {\n output = new Uint16Array(length);\n } else {\n output = new Uint32Array(length);\n }\n const rowComps = width * numComps;\n\n const max = (1 << bpc) - 1;\n let i = 0,\n ii,\n buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n let mask, loop1End, loop2End;\n for (let j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n // unroll loop for all full bytes\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = (buf >> 7) & 1;\n output[i + 1] = (buf >> 6) & 1;\n output[i + 2] = (buf >> 5) & 1;\n output[i + 3] = (buf >> 4) & 1;\n output[i + 4] = (buf >> 3) & 1;\n output[i + 5] = (buf >> 2) & 1;\n output[i + 6] = (buf >> 1) & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n // handle remaining bits\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n // The general case that handles all other bpc values.\n let bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = (buf << 8) | buffer[bufferPos++];\n bits += 8;\n }\n\n const remainingBits = bits - bpc;\n let value = buf >> remainingBits;\n if (value < 0) {\n value = 0;\n } else if (value > max) {\n value = max;\n }\n output[i] = value;\n buf &= (1 << remainingBits) - 1;\n bits = remainingBits;\n }\n }\n return output;\n }\n\n fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n rgbaBuf instanceof Uint8ClampedArray,\n 'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.'\n );\n }\n const smask = this.smask;\n const mask = this.mask;\n let alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8ClampedArray(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n // Need to invert values in rgbaBuf\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n }\n } else if (Array.isArray(mask)) {\n // Color key mask: if any of the components are outside the range\n // then they should be painted.\n alphaBuf = new Uint8ClampedArray(width * height);\n const numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n let opacity = 0;\n const imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n const color = image[imageOffset + j];\n const maskOffset = j * 2;\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n alphaBuf[i] = opacity;\n }\n } else {\n throw new FormatError(\"Unknown mask format.\");\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n // No mask.\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n }\n\n undoPreblend(buffer, width, height) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.undoPreblend: Unsupported \"buffer\" type.'\n );\n }\n const matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n const matteRgb = this.colorSpace.getRgb(matte, 0);\n const matteR = matteRgb[0];\n const matteG = matteRgb[1];\n const matteB = matteRgb[2];\n const length = width * height * 4;\n for (let i = 0; i < length; i += 4) {\n const alpha = buffer[i + 3];\n if (alpha === 0) {\n // according formula we have to get Infinity in all components\n // making it white (typical paper color) should be okay\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n const k = 255 / alpha;\n buffer[i] = (buffer[i] - matteR) * k + matteR;\n buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n }\n }\n\n createImageData(forceRGBA = false) {\n const drawWidth = this.drawWidth;\n const drawHeight = this.drawHeight;\n const imgData = {\n width: drawWidth,\n height: drawHeight,\n interpolate: this.interpolate,\n kind: 0,\n data: null,\n // Other fields are filled in below.\n };\n\n const numComps = this.numComps;\n const originalWidth = this.width;\n const originalHeight = this.height;\n const bpc = this.bpc;\n\n // Rows start at byte boundary.\n const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n\n if (!forceRGBA) {\n // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n // without any complications, we pass a same-sized copy to the main\n // thread rather than expanding by 32x to RGBA form. This saves *lots*\n // of memory for many scanned documents. It's also much faster.\n //\n // Similarly, if it is a 24-bit-per pixel RGB image without any\n // complications, we avoid expanding by 1.333x to RGBA form.\n let kind;\n if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (\n this.colorSpace.name === \"DeviceRGB\" &&\n bpc === 8 &&\n !this.needsDecode\n ) {\n kind = ImageKind.RGB_24BPP;\n }\n if (\n kind &&\n !this.smask &&\n !this.mask &&\n drawWidth === originalWidth &&\n drawHeight === originalHeight\n ) {\n imgData.kind = kind;\n imgData.data = this.getImageBytes(originalHeight * rowBytes, {});\n\n if (this.needsDecode) {\n // Invert the buffer (which must be grayscale if we reached here).\n assert(\n kind === ImageKind.GRAYSCALE_1BPP,\n \"PDFImage.createImageData: The image must be grayscale.\"\n );\n const buffer = imgData.data;\n for (let i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n let imageLength = originalHeight * rowBytes;\n switch (this.colorSpace.name) {\n case \"DeviceGray\":\n // Avoid truncating the image, since `JpegImage.getData`\n // will expand the image data when `forceRGB === true`.\n imageLength *= 3;\n /* falls through */\n case \"DeviceRGB\":\n case \"DeviceCMYK\":\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(imageLength, {\n drawWidth,\n drawHeight,\n forceRGB: true,\n });\n return imgData;\n }\n }\n }\n\n const imgArray = this.getImageBytes(originalHeight * rowBytes, {\n internal: true,\n });\n // imgArray can be incomplete (e.g. after CCITT fax encoding).\n const actualHeight =\n 0 | (((imgArray.length / rowBytes) * drawHeight) / originalHeight);\n\n const comps = this.getComponents(imgArray);\n\n // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n // more compact RGB_24BPP form if allowable.\n let alpha01, maybeUndoPreblend;\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = ImageKind.RGBA_32BPP;\n imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n\n // Color key masking (opacity) must be performed before decoding.\n this.fillOpacity(\n imgData.data,\n drawWidth,\n drawHeight,\n actualHeight,\n comps\n );\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(\n imgData.data,\n originalWidth,\n originalHeight,\n drawWidth,\n drawHeight,\n actualHeight,\n bpc,\n comps,\n alpha01\n );\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n }\n\n fillGrayBuffer(buffer) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n buffer instanceof Uint8ClampedArray,\n 'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.'\n );\n }\n const numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`\n );\n }\n\n const width = this.width;\n const height = this.height;\n const bpc = this.bpc;\n\n // rows start at byte boundary\n const rowBytes = (width * numComps * bpc + 7) >> 3;\n const imgArray = this.getImageBytes(height * rowBytes, { internal: true });\n\n const comps = this.getComponents(imgArray);\n let i, length;\n\n if (bpc === 1) {\n // inline decoding (= inversion) for 1 bpc images\n length = width * height;\n if (this.needsDecode) {\n // invert and scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (comps[i] - 1) & 255;\n }\n } else {\n // scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = -comps[i] & 255;\n }\n }\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n // we aren't using a colorspace so we need to scale the value\n const scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = scale * comps[i];\n }\n }\n\n getImageBytes(\n length,\n { drawWidth, drawHeight, forceRGB = false, internal = false }\n ) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n const imageBytes = this.image.getBytes(length);\n\n // If imageBytes came from a DecodeStream, we're safe to transfer it\n // (and thus detach its underlying buffer) because it will constitute\n // the entire DecodeStream's data. But if it came from a Stream, we\n // need to copy it because it'll only be a portion of the Stream's\n // data, and the rest will be read later on.\n if (internal || this.image instanceof DecodeStream) {\n return imageBytes;\n }\n assert(\n imageBytes instanceof Uint8Array,\n 'PDFImage.getImageBytes: Unsupported \"imageBytes\" type.'\n );\n return new Uint8Array(imageBytes);\n }\n}\n\nexport { PDFImage };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest } from \"./util.js\";\n\nfunction applyMaskImageData({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n inverseDecode = false,\n}) {\n const opaque = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n }\n }\n\n return { srcPos, destPos };\n}\n\nexport { applyMaskImageData };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, warn } from \"../shared/util.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport {\n escapePDFName,\n escapeString,\n numberToString,\n parseXFAPath,\n} from \"./core_utils.js\";\nimport { SimpleDOMNode, SimpleXMLParser } from \"./xml_parser.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { calculateMD5 } from \"./crypto.js\";\n\nfunction writeObject(ref, obj, buffer, transform) {\n buffer.push(`${ref.num} ${ref.gen} obj\\n`);\n if (obj instanceof Dict) {\n writeDict(obj, buffer, transform);\n } else if (obj instanceof BaseStream) {\n writeStream(obj, buffer, transform);\n }\n buffer.push(\"\\nendobj\\n\");\n}\n\nfunction writeDict(dict, buffer, transform) {\n buffer.push(\"<<\");\n for (const key of dict.getKeys()) {\n buffer.push(` /${escapePDFName(key)} `);\n writeValue(dict.getRaw(key), buffer, transform);\n }\n buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n writeDict(stream.dict, buffer, transform);\n buffer.push(\" stream\\n\");\n let string = stream.getString();\n if (transform !== null) {\n string = transform.encryptString(string);\n }\n buffer.push(string, \"\\nendstream\");\n}\n\nfunction writeArray(array, buffer, transform) {\n buffer.push(\"[\");\n let first = true;\n for (const val of array) {\n if (!first) {\n buffer.push(\" \");\n } else {\n first = false;\n }\n writeValue(val, buffer, transform);\n }\n buffer.push(\"]\");\n}\n\nfunction writeValue(value, buffer, transform) {\n if (value instanceof Name) {\n buffer.push(`/${escapePDFName(value.name)}`);\n } else if (value instanceof Ref) {\n buffer.push(`${value.num} ${value.gen} R`);\n } else if (Array.isArray(value)) {\n writeArray(value, buffer, transform);\n } else if (typeof value === \"string\") {\n if (transform !== null) {\n value = transform.encryptString(value);\n }\n buffer.push(`(${escapeString(value)})`);\n } else if (typeof value === \"number\") {\n buffer.push(numberToString(value));\n } else if (typeof value === \"boolean\") {\n buffer.push(value.toString());\n } else if (value instanceof Dict) {\n writeDict(value, buffer, transform);\n } else if (value instanceof BaseStream) {\n writeStream(value, buffer, transform);\n } else if (value === null) {\n buffer.push(\"null\");\n } else {\n warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n for (let i = size + offset - 1; i > offset - 1; i--) {\n buffer[i] = number & 0xff;\n number >>= 8;\n }\n return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n for (let i = 0, len = string.length; i < len; i++) {\n buffer[offset + i] = string.charCodeAt(i) & 0xff;\n }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n const time = Math.floor(Date.now() / 1000);\n const filename = xrefInfo.filename || \"\";\n const md5Buffer = [time.toString(), filename, filesize.toString()];\n let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n for (const value of Object.values(xrefInfo.info)) {\n md5Buffer.push(value);\n md5BufferLen += value.length;\n }\n\n const array = new Uint8Array(md5BufferLen);\n let offset = 0;\n for (const str of md5Buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n return bytesToString(calculateMD5(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\n\n for (const { xfa } of newRefs) {\n if (!xfa) {\n continue;\n }\n const { path, value } = xfa;\n if (!path) {\n continue;\n }\n const node = xml.documentElement.searchNode(parseXFAPath(path), 0);\n if (node) {\n if (Array.isArray(value)) {\n node.childNodes = value.map(val => new SimpleDOMNode(\"value\", val));\n } else {\n node.childNodes = [new SimpleDOMNode(\"#text\", value)];\n }\n } else {\n warn(`Node not found for path: ${path}`);\n }\n }\n const buffer = [];\n xml.documentElement.dump(buffer);\n return buffer.join(\"\");\n}\n\nfunction updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n newRefs,\n}) {\n if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\n warn(\"XFA - Cannot save it\");\n }\n\n if (!needAppearances && (!hasXfa || !xfaDatasetsRef)) {\n return;\n }\n\n // Clone the acroForm.\n const dict = new Dict(xref);\n for (const key of acroForm.getKeys()) {\n dict.set(key, acroForm.getRaw(key));\n }\n\n if (hasXfa && !hasXfaDatasetsEntry) {\n // We've a XFA array which doesn't contain a datasets entry.\n // So we'll update the AcroForm dictionary to have an XFA containing\n // the datasets.\n const newXfa = acroForm.get(\"XFA\").slice();\n newXfa.splice(2, 0, \"datasets\");\n newXfa.splice(3, 0, xfaDatasetsRef);\n\n dict.set(\"XFA\", newXfa);\n }\n\n if (needAppearances) {\n dict.set(\"NeedAppearances\", true);\n }\n\n const encrypt = xref.encrypt;\n let transform = null;\n if (encrypt) {\n transform = encrypt.createCipherTransform(acroFormRef.num, acroFormRef.gen);\n }\n\n const buffer = [];\n writeObject(acroFormRef, dict, buffer, transform);\n\n newRefs.push({ ref: acroFormRef, data: buffer.join(\"\") });\n}\n\nfunction updateXFA({ xfaData, xfaDatasetsRef, newRefs, xref }) {\n if (xfaData === null) {\n const datasets = xref.fetchIfRef(xfaDatasetsRef);\n xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n }\n\n const encrypt = xref.encrypt;\n if (encrypt) {\n const transform = encrypt.createCipherTransform(\n xfaDatasetsRef.num,\n xfaDatasetsRef.gen\n );\n xfaData = transform.encryptString(xfaData);\n }\n const data =\n `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` +\n `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` +\n xfaData +\n \"\\nendstream\\nendobj\\n\";\n\n newRefs.push({ ref: xfaDatasetsRef, data });\n}\n\nfunction incrementalUpdate({\n originalData,\n xrefInfo,\n newRefs,\n xref = null,\n hasXfa = false,\n xfaDatasetsRef = null,\n hasXfaDatasetsEntry = false,\n needAppearances,\n acroFormRef = null,\n acroForm = null,\n xfaData = null,\n}) {\n updateAcroform({\n xref,\n acroForm,\n acroFormRef,\n hasXfa,\n hasXfaDatasetsEntry,\n xfaDatasetsRef,\n needAppearances,\n newRefs,\n });\n\n if (hasXfa) {\n updateXFA({\n xfaData,\n xfaDatasetsRef,\n newRefs,\n xref,\n });\n }\n\n const newXref = new Dict(null);\n const refForXrefTable = xrefInfo.newRef;\n\n let buffer, baseOffset;\n const lastByte = originalData.at(-1);\n if (lastByte === /* \\n */ 0x0a || lastByte === /* \\r */ 0x0d) {\n buffer = [];\n baseOffset = originalData.length;\n } else {\n // Avoid to concatenate %%EOF with an object definition\n buffer = [\"\\n\"];\n baseOffset = originalData.length + 1;\n }\n\n newXref.set(\"Size\", refForXrefTable.num + 1);\n newXref.set(\"Prev\", xrefInfo.startXRef);\n newXref.set(\"Type\", Name.get(\"XRef\"));\n\n if (xrefInfo.rootRef !== null) {\n newXref.set(\"Root\", xrefInfo.rootRef);\n }\n if (xrefInfo.infoRef !== null) {\n newXref.set(\"Info\", xrefInfo.infoRef);\n }\n if (xrefInfo.encryptRef !== null) {\n newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n }\n\n // Add a ref for the new xref and sort them\n newRefs.push({ ref: refForXrefTable, data: \"\" });\n newRefs = newRefs.sort((a, b) => {\n // compare the refs\n return a.ref.num - b.ref.num;\n });\n\n const xrefTableData = [[0, 1, 0xffff]];\n const indexes = [0, 1];\n let maxOffset = 0;\n for (const { ref, data } of newRefs) {\n maxOffset = Math.max(maxOffset, baseOffset);\n xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n baseOffset += data.length;\n indexes.push(ref.num, 1);\n buffer.push(data);\n }\n\n newXref.set(\"Index\", indexes);\n\n if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n const md5 = computeMD5(baseOffset, xrefInfo);\n newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n }\n\n const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n const sizes = [1, offsetSize, 2];\n const structSize = sizes[0] + sizes[1] + sizes[2];\n const tableLength = structSize * xrefTableData.length;\n newXref.set(\"W\", sizes);\n newXref.set(\"Length\", tableLength);\n\n buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n writeDict(newXref, buffer, null);\n buffer.push(\" stream\\n\");\n\n const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n const array = new Uint8Array(\n originalData.length + bufferLen + tableLength + footer.length\n );\n\n // Original data\n array.set(originalData);\n let offset = originalData.length;\n\n // New data\n for (const str of buffer) {\n writeString(str, offset, array);\n offset += str.length;\n }\n\n // New xref table\n for (const [type, objOffset, gen] of xrefTableData) {\n offset = writeInt(type, sizes[0], offset, array);\n offset = writeInt(objOffset, sizes[1], offset, array);\n offset = writeInt(gen, sizes[2], offset, array);\n }\n\n // Add the footer\n writeString(footer, offset, array);\n\n return array;\n}\n\nexport { incrementalUpdate, writeDict, writeObject };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nimport { encodeToXmlString } from \"./core_utils.js\";\n\nconst XMLParserErrorCode = {\n NoError: 0,\n EndOfDocument: -1,\n UnterminatedCdat: -2,\n UnterminatedXmlDeclaration: -3,\n UnterminatedDoctypeDeclaration: -4,\n UnterminatedComment: -5,\n MalformedElement: -6,\n OutOfMemory: -7,\n UnterminatedAttributeValue: -8,\n UnterminatedElement: -9,\n ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n const ch = s[index];\n return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (!isWhitespace(s, i)) {\n return false;\n }\n }\n return true;\n}\n\nclass XMLParserBase {\n _resolveEntities(s) {\n return s.replace(/&([^;]+);/g, (all, entity) => {\n if (entity.substring(0, 2) === \"#x\") {\n return String.fromCodePoint(parseInt(entity.substring(2), 16));\n } else if (entity.substring(0, 1) === \"#\") {\n return String.fromCodePoint(parseInt(entity.substring(1), 10));\n }\n switch (entity) {\n case \"lt\":\n return \"<\";\n case \"gt\":\n return \">\";\n case \"amp\":\n return \"&\";\n case \"quot\":\n return '\"';\n case \"apos\":\n return \"'\";\n }\n return this.onResolveEntity(entity);\n });\n }\n\n _parseContent(s, start) {\n const attributes = [];\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n while (\n pos < s.length &&\n s[pos] !== \">\" &&\n s[pos] !== \"/\" &&\n s[pos] !== \"?\"\n ) {\n skipWs();\n let attrName = \"\",\n attrValue = \"\";\n while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n attrName += s[pos];\n ++pos;\n }\n skipWs();\n if (s[pos] !== \"=\") {\n return null;\n }\n ++pos;\n skipWs();\n const attrEndChar = s[pos];\n if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n return null;\n }\n const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n if (attrEndIndex < 0) {\n return null;\n }\n attrValue = s.substring(pos, attrEndIndex);\n attributes.push({\n name: attrName,\n value: this._resolveEntities(attrValue),\n });\n pos = attrEndIndex + 1;\n skipWs();\n }\n return {\n name,\n attributes,\n parsed: pos - start,\n };\n }\n\n _parseProcessingInstruction(s, start) {\n let pos = start;\n\n function skipWs() {\n while (pos < s.length && isWhitespace(s, pos)) {\n ++pos;\n }\n }\n\n while (\n pos < s.length &&\n !isWhitespace(s, pos) &&\n s[pos] !== \">\" &&\n s[pos] !== \"?\" &&\n s[pos] !== \"/\"\n ) {\n ++pos;\n }\n const name = s.substring(start, pos);\n skipWs();\n const attrStart = pos;\n while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n ++pos;\n }\n const value = s.substring(attrStart, pos);\n return {\n name,\n value,\n parsed: pos - start,\n };\n }\n\n parseXml(s) {\n let i = 0;\n while (i < s.length) {\n const ch = s[i];\n let j = i;\n if (ch === \"<\") {\n ++j;\n const ch2 = s[j];\n let q;\n switch (ch2) {\n case \"/\":\n ++j;\n q = s.indexOf(\">\", j);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onEndElement(s.substring(j, q));\n j = q + 1;\n break;\n case \"?\":\n ++j;\n const pi = this._parseProcessingInstruction(s, j);\n if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n return;\n }\n this.onPi(pi.name, pi.value);\n j += pi.parsed + 2;\n break;\n case \"!\":\n if (s.substring(j + 1, j + 3) === \"--\") {\n q = s.indexOf(\"-->\", j + 3);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedComment);\n return;\n }\n this.onComment(s.substring(j + 3, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n q = s.indexOf(\"]]>\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedCdat);\n return;\n }\n this.onCdata(s.substring(j + 8, q));\n j = q + 3;\n } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n const q2 = s.indexOf(\"[\", j + 8);\n let complexDoctype = false;\n q = s.indexOf(\">\", j + 8);\n if (q < 0) {\n this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n return;\n }\n if (q2 > 0 && q > q2) {\n q = s.indexOf(\"]>\", j + 8);\n if (q < 0) {\n this.onError(\n XMLParserErrorCode.UnterminatedDoctypeDeclaration\n );\n return;\n }\n complexDoctype = true;\n }\n const doctypeContent = s.substring(\n j + 8,\n q + (complexDoctype ? 1 : 0)\n );\n this.onDoctype(doctypeContent);\n j = q + (complexDoctype ? 2 : 1);\n } else {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n break;\n default:\n const content = this._parseContent(s, j);\n if (content === null) {\n this.onError(XMLParserErrorCode.MalformedElement);\n return;\n }\n let isClosed = false;\n if (\n s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\"\n ) {\n isClosed = true;\n } else if (\n s.substring(j + content.parsed, j + content.parsed + 1) !== \">\"\n ) {\n this.onError(XMLParserErrorCode.UnterminatedElement);\n return;\n }\n this.onBeginElement(content.name, content.attributes, isClosed);\n j += content.parsed + (isClosed ? 2 : 1);\n break;\n }\n } else {\n while (j < s.length && s[j] !== \"<\") {\n j++;\n }\n const text = s.substring(i, j);\n this.onText(this._resolveEntities(text));\n }\n i = j;\n }\n }\n\n onResolveEntity(name) {\n return `&${name};`;\n }\n\n onPi(name, value) {}\n\n onComment(text) {}\n\n onCdata(text) {}\n\n onDoctype(doctypeContent) {}\n\n onText(text) {}\n\n onBeginElement(name, attributes, isEmpty) {}\n\n onEndElement(name) {}\n\n onError(code) {}\n}\n\nclass SimpleDOMNode {\n constructor(nodeName, nodeValue) {\n this.nodeName = nodeName;\n this.nodeValue = nodeValue;\n\n Object.defineProperty(this, \"parentNode\", { value: null, writable: true });\n }\n\n get firstChild() {\n return this.childNodes && this.childNodes[0];\n }\n\n get nextSibling() {\n const childNodes = this.parentNode.childNodes;\n if (!childNodes) {\n return undefined;\n }\n const index = childNodes.indexOf(this);\n if (index === -1) {\n return undefined;\n }\n return childNodes[index + 1];\n }\n\n get textContent() {\n if (!this.childNodes) {\n return this.nodeValue || \"\";\n }\n return this.childNodes\n .map(function (child) {\n return child.textContent;\n })\n .join(\"\");\n }\n\n get children() {\n return this.childNodes || [];\n }\n\n hasChildNodes() {\n return this.childNodes && this.childNodes.length > 0;\n }\n\n /**\n * Search a node in the tree with the given path\n * foo.bar[nnn], i.e. find the nnn-th node named\n * bar under a node named foo.\n *\n * @param {Array} paths - an array of objects as\n * returned by {parseXFAPath}.\n * @param {number} pos - the current position in\n * the paths array.\n * @returns {SimpleDOMNode} The node corresponding\n * to the path or null if not found.\n */\n searchNode(paths, pos) {\n if (pos >= paths.length) {\n return this;\n }\n\n const component = paths[pos];\n const stack = [];\n let node = this;\n\n while (true) {\n if (component.name === node.nodeName) {\n if (component.pos === 0) {\n const res = node.searchNode(paths, pos + 1);\n if (res !== null) {\n return res;\n }\n } else if (stack.length === 0) {\n return null;\n } else {\n const [parent] = stack.pop();\n let siblingPos = 0;\n for (const child of parent.childNodes) {\n if (component.name === child.nodeName) {\n if (siblingPos === component.pos) {\n return child.searchNode(paths, pos + 1);\n }\n siblingPos++;\n }\n }\n // We didn't find the correct sibling\n // so just return the first found node\n return node.searchNode(paths, pos + 1);\n }\n }\n\n if (node.childNodes && node.childNodes.length !== 0) {\n stack.push([node, 0]);\n node = node.childNodes[0];\n } else if (stack.length === 0) {\n return null;\n } else {\n while (stack.length !== 0) {\n const [parent, currentPos] = stack.pop();\n const newPos = currentPos + 1;\n if (newPos < parent.childNodes.length) {\n stack.push([parent, newPos]);\n node = parent.childNodes[newPos];\n break;\n }\n }\n if (stack.length === 0) {\n return null;\n }\n }\n }\n }\n\n dump(buffer) {\n if (this.nodeName === \"#text\") {\n buffer.push(encodeToXmlString(this.nodeValue));\n return;\n }\n\n buffer.push(`<${this.nodeName}`);\n if (this.attributes) {\n for (const attribute of this.attributes) {\n buffer.push(\n ` ${attribute.name}=\"${encodeToXmlString(attribute.value)}\"`\n );\n }\n }\n if (this.hasChildNodes()) {\n buffer.push(\">\");\n for (const child of this.childNodes) {\n child.dump(buffer);\n }\n buffer.push(`</${this.nodeName}>`);\n } else if (this.nodeValue) {\n buffer.push(`>${encodeToXmlString(this.nodeValue)}</${this.nodeName}>`);\n } else {\n buffer.push(\"/>\");\n }\n }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n constructor({ hasAttributes = false, lowerCaseName = false }) {\n super();\n this._currentFragment = null;\n this._stack = null;\n this._errorCode = XMLParserErrorCode.NoError;\n this._hasAttributes = hasAttributes;\n this._lowerCaseName = lowerCaseName;\n }\n\n parseFromString(data) {\n this._currentFragment = [];\n this._stack = [];\n this._errorCode = XMLParserErrorCode.NoError;\n\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined; // return undefined on error\n }\n\n // We should only have one root.\n const [documentElement] = this._currentFragment;\n if (!documentElement) {\n return undefined; // Return undefined if no root was found.\n }\n return { documentElement };\n }\n\n onText(text) {\n if (isWhitespaceString(text)) {\n return;\n }\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onCdata(text) {\n const node = new SimpleDOMNode(\"#text\", text);\n this._currentFragment.push(node);\n }\n\n onBeginElement(name, attributes, isEmpty) {\n if (this._lowerCaseName) {\n name = name.toLowerCase();\n }\n const node = new SimpleDOMNode(name);\n node.childNodes = [];\n if (this._hasAttributes) {\n node.attributes = attributes;\n }\n this._currentFragment.push(node);\n if (isEmpty) {\n return;\n }\n this._stack.push(this._currentFragment);\n this._currentFragment = node.childNodes;\n }\n\n onEndElement(name) {\n this._currentFragment = this._stack.pop() || [];\n const lastElement = this._currentFragment.at(-1);\n if (!lastElement) {\n return null;\n }\n for (const childNode of lastElement.childNodes) {\n childNode.parentNode = lastElement;\n }\n return lastElement;\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString,\n FormatError,\n isArrayEqual,\n PasswordException,\n PasswordResponses,\n stringToBytes,\n unreachable,\n utf8StringToString,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, Name } from \"./primitives.js\";\nimport { DecryptStream } from \"./decrypt_stream.js\";\n\nclass ARCFourCipher {\n constructor(key) {\n this.a = 0;\n this.b = 0;\n const s = new Uint8Array(256);\n const keyLength = key.length;\n\n for (let i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (let i = 0, j = 0; i < 256; ++i) {\n const tmp = s[i];\n j = (j + tmp + key[i % keyLength]) & 0xff;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n\n encryptBlock(data) {\n let a = this.a,\n b = this.b;\n const s = this.s;\n const n = data.length;\n const output = new Uint8Array(n);\n for (let i = 0; i < n; ++i) {\n a = (a + 1) & 0xff;\n const tmp = s[a];\n b = (b + tmp) & 0xff;\n const tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\n }\n this.a = a;\n this.b = b;\n return output;\n }\n\n decryptBlock(data) {\n return this.encryptBlock(data);\n }\n\n encrypt(data) {\n return this.encryptBlock(data);\n }\n}\n\nconst calculateMD5 = (function calculateMD5Closure() {\n const r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\n 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\n 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\n 15, 21,\n ]);\n\n const k = new Int32Array([\n -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n -145523070, -1120210379, 718787259, -343485551,\n ]);\n\n function hash(data, offset, length) {\n let h0 = 1732584193,\n h1 = -271733879,\n h2 = -1732584194,\n h3 = 271733878;\n // pre-processing\n const paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n const w = new Int32Array(16);\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] =\n padded[i] |\n (padded[i + 1] << 8) |\n (padded[i + 2] << 16) |\n (padded[i + 3] << 24);\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n f,\n g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = (b & c) | (~b & d);\n g = j;\n } else if (j < 32) {\n f = (d & b) | (~d & c);\n g = (5 * j + 1) & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = (3 * j + 5) & 15;\n } else {\n f = c ^ (b | ~d);\n g = (7 * j) & 15;\n }\n const tmp = d,\n rotateArg = (a + f + k[j] + w[g]) | 0,\n rotate = r[j];\n d = c;\n c = b;\n b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n a = tmp;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nclass Word64 {\n constructor(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n\n and(word) {\n this.high &= word.high;\n this.low &= word.low;\n }\n\n xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n }\n\n or(word) {\n this.high |= word.high;\n this.low |= word.low;\n }\n\n shiftRight(places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n } else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n }\n\n shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n } else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low <<= places;\n }\n }\n\n rotateRight(places) {\n let low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n }\n\n not() {\n this.high = ~this.high;\n this.low = ~this.low;\n }\n\n add(word) {\n const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n let highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xffffffff) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n }\n\n copyTo(bytes, offset) {\n bytes[offset] = (this.high >>> 24) & 0xff;\n bytes[offset + 1] = (this.high >> 16) & 0xff;\n bytes[offset + 2] = (this.high >> 8) & 0xff;\n bytes[offset + 3] = this.high & 0xff;\n bytes[offset + 4] = (this.low >>> 24) & 0xff;\n bytes[offset + 5] = (this.low >> 16) & 0xff;\n bytes[offset + 6] = (this.low >> 8) & 0xff;\n bytes[offset + 7] = this.low & 0xff;\n }\n\n assign(word) {\n this.high = word.high;\n this.low = word.low;\n }\n}\n\nconst calculateSHA256 = (function calculateSHA256Closure() {\n function rotr(x, n) {\n return (x >>> n) | (x << (32 - n));\n }\n\n function ch(x, y, z) {\n return (x & y) ^ (~x & z);\n }\n\n function maj(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\n }\n\n const k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n\n function hash(data, offset, length) {\n // initial hash values\n let h0 = 0x6a09e667,\n h1 = 0xbb67ae85,\n h2 = 0x3c6ef372,\n h3 = 0xa54ff53a,\n h4 = 0x510e527f,\n h5 = 0x9b05688c,\n h6 = 0x1f83d9ab,\n h7 = 0x5be0cd19;\n // pre-processing\n const paddedLength = Math.ceil((length + 9) / 64) * 64;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n const w = new Uint32Array(64);\n // for each 512 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j] =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] =\n (littleSigmaPrime(w[j - 2]) +\n w[j - 7] +\n littleSigma(w[j - 15]) +\n w[j - 16]) |\n 0;\n }\n let a = h0,\n b = h1,\n c = h2,\n d = h3,\n e = h4,\n f = h5,\n g = h6,\n h = h7,\n t1,\n t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n // prettier-ignore\n return new Uint8Array([\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nconst calculateSHA512 = (function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n // prettier-ignore\n const k = [\n new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384 = false) {\n // initial hash values\n let h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n // SHA384 is exactly the same\n // except with different starting values and a trimmed result\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n // pre-processing\n const paddedLength = Math.ceil((length + 17) / 128) * 128;\n const padded = new Uint8Array(paddedLength);\n let i, j;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n const n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xff;\n padded[i++] = (length >> 21) & 0xff;\n padded[i++] = (length >> 13) & 0xff;\n padded[i++] = (length >> 5) & 0xff;\n padded[i++] = (length << 3) & 0xff;\n\n const w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n let a = new Word64(0, 0),\n b = new Word64(0, 0),\n c = new Word64(0, 0);\n let d = new Word64(0, 0),\n e = new Word64(0, 0),\n f = new Word64(0, 0);\n let g = new Word64(0, 0),\n h = new Word64(0, 0);\n const t1 = new Word64(0, 0),\n t2 = new Word64(0, 0);\n const tmp1 = new Word64(0, 0),\n tmp2 = new Word64(0, 0);\n let tmp3;\n\n // for each 1024 bit block\n for (i = 0; i < paddedLength; ) {\n for (j = 0; j < 16; ++j) {\n w[j].high =\n (padded[i] << 24) |\n (padded[i + 1] << 16) |\n (padded[i + 2] << 8) |\n padded[i + 3];\n w[j].low =\n (padded[i + 4] << 24) |\n (padded[i + 5] << 16) |\n (padded[i + 6] << 8) |\n padded[i + 7];\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0);\n b.assign(h1);\n c.assign(h2);\n d.assign(h3);\n e.assign(h4);\n f.assign(h5);\n g.assign(h6);\n h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n let result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n }\n\n return hash;\n})();\n\nfunction calculateSHA384(data, offset, length) {\n return calculateSHA512(data, offset, length, /* mode384 = */ true);\n}\n\nclass NullCipher {\n decryptBlock(data) {\n return data;\n }\n\n encrypt(data) {\n return data;\n }\n}\n\nclass AESBaseCipher {\n constructor() {\n if (this.constructor === AESBaseCipher) {\n unreachable(\"Cannot initialize AESBaseCipher.\");\n }\n\n this._s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16,\n ]);\n\n this._inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d,\n ]);\n\n this._mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n ]);\n\n this._mixCol = new Uint8Array(256);\n for (let i = 0; i < 256; i++) {\n if (i < 128) {\n this._mixCol[i] = i << 1;\n } else {\n this._mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n _expandKey(cipherKey) {\n unreachable(\"Cannot call `_expandKey` on the base class\");\n }\n\n _decrypt(input, key) {\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = this._inv_s[state[j]];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = this._mix[state[j]];\n const s1 = this._mix[state[j + 1]];\n const s2 = this._mix[state[j + 2]];\n const s3 = this._mix[state[j + 3]];\n t =\n s0 ^\n (s1 >>> 8) ^\n (s1 << 24) ^\n (s2 >>> 16) ^\n (s2 << 16) ^\n (s3 >>> 24) ^\n (s3 << 8);\n state[j] = (t >>> 24) & 0xff;\n state[j + 1] = (t >> 16) & 0xff;\n state[j + 2] = (t >> 8) & 0xff;\n state[j + 3] = t & 0xff;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (let j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = this._inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n _encrypt(input, key) {\n const s = this._s;\n\n let t, u, v;\n const state = new Uint8Array(16);\n state.set(input);\n\n for (let j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (let i = 1; i < this._cyclesOfRepetition; i++) {\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (let j = 0; j < 16; j += 4) {\n const s0 = state[j + 0];\n const s1 = state[j + 1];\n const s2 = state[j + 2];\n const s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (let j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n\n _decryptBlock2(data, finalize) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n let iv = this.iv;\n\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n const plain = this._decrypt(buffer, this._key);\n // xor-ing the IV vector to get plain text\n for (let j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n let outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n const lastBlock = result.at(-1);\n let psLen = lastBlock[15];\n if (psLen <= 16) {\n for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n\n decryptBlock(data, finalize, iv = null) {\n const sourceLength = data.length;\n const buffer = this.buffer;\n let bufferLength = this.bufferPosition;\n // If an IV is not supplied, wait for IV values. They are at the start\n // of the stream.\n if (iv) {\n this.iv = iv;\n } else {\n for (\n let i = 0;\n bufferLength < 16 && i < sourceLength;\n ++i, ++bufferLength\n ) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n // Need more data.\n this.bufferLength = bufferLength;\n return new Uint8Array(0);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = this._decryptBlock2;\n return this.decryptBlock(data, finalize);\n }\n\n encrypt(data, iv) {\n const sourceLength = data.length;\n let buffer = this.buffer,\n bufferLength = this.bufferPosition;\n const result = [];\n\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (let i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n\n for (let j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n const cipher = this._encrypt(buffer, this._key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array(0);\n }\n // combining plain text blocks into one\n const outputLength = 16 * result.length;\n const output = new Uint8Array(outputLength);\n for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 10;\n this._keySize = 160; // bits\n\n this._rcon = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d,\n ]);\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 176;\n const s = this._s;\n const rcon = this._rcon;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n for (let j = 16, i = 1; j < b; ++i) {\n // RotWord\n let t1 = result[j - 3];\n let t2 = result[j - 2];\n let t3 = result[j - 1];\n let t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= rcon[i];\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 16];\n j++;\n result[j] = t2 ^= result[j - 16];\n j++;\n result[j] = t3 ^= result[j - 16];\n j++;\n result[j] = t4 ^= result[j - 16];\n j++;\n }\n }\n return result;\n }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n constructor(key) {\n super();\n\n this._cyclesOfRepetition = 14;\n this._keySize = 224; // bits\n\n this._key = this._expandKey(key);\n }\n\n _expandKey(cipherKey) {\n const b = 240;\n const s = this._s;\n\n const result = new Uint8Array(b);\n result.set(cipherKey);\n\n let r = 1;\n let t1, t2, t3, t4;\n for (let j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n // RotWord\n t1 = result[j - 3];\n t2 = result[j - 2];\n t3 = result[j - 1];\n t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 ^= r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xff;\n }\n }\n\n for (let n = 0; n < 4; ++n) {\n result[j] = t1 ^= result[j - 32];\n j++;\n result[j] = t2 ^= result[j - 32];\n j++;\n result[j] = t3 ^= result[j - 32];\n j++;\n result[j] = t4 ^= result[j - 32];\n j++;\n }\n }\n return result;\n }\n}\n\nclass PDF17 {\n checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculateSHA256(hashData, 0, hashData.length);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculateSHA256(hashData, 0, hashData.length);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n}\n\nconst PDF20 = (function PDF20Closure() {\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n let e = [0];\n let i = 0;\n while (i < 64 || e.at(-1) > i - 32) {\n const combinedLength = password.length + k.length + userBytes.length,\n combinedArray = new Uint8Array(combinedLength);\n let writeOffset = 0;\n combinedArray.set(password, writeOffset);\n writeOffset += password.length;\n combinedArray.set(k, writeOffset);\n writeOffset += k.length;\n combinedArray.set(userBytes, writeOffset);\n\n const k1 = new Uint8Array(combinedLength * 64);\n for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n k1.set(combinedArray, pos);\n }\n // AES128 CBC NO PADDING with first 16 bytes of k as the key\n // and the second 16 as the iv.\n const cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n // Now we have to take the first 16 bytes of an unsigned big endian\n // integer and compute the remainder modulo 3. That is a fairly large\n // number and JavaScript isn't going to handle that well.\n // The number is e0 + 256 * e1 + 256^2 * e2... and 256 % 3 === 1, hence\n // the powers of 256 are === 1 modulo 3 and finally the number modulo 3\n // is equal to the remainder modulo 3 of the sum of the e_n.\n const remainder = e.slice(0, 16).reduce((a, b) => a + b, 0) % 3;\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n\n // eslint-disable-next-line no-shadow\n class PDF20 {\n hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n }\n\n checkOwnerPassword(\n password,\n ownerValidationSalt,\n userBytes,\n ownerPassword\n ) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n const result = calculatePDF20Hash(password, hashData, userBytes);\n return isArrayEqual(result, ownerPassword);\n }\n\n checkUserPassword(password, userValidationSalt, userPassword) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n const result = calculatePDF20Hash(password, hashData, []);\n return isArrayEqual(result, userPassword);\n }\n\n getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n const hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n const key = calculatePDF20Hash(password, hashData, userBytes);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n }\n\n getUserKey(password, userKeySalt, userEncryption) {\n const hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n const key = calculatePDF20Hash(password, hashData, []);\n const cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n }\n }\n\n return PDF20;\n})();\n\nclass CipherTransform {\n constructor(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n createStream(stream, length) {\n const cipher = new this.StreamCipherConstructor();\n return new DecryptStream(\n stream,\n length,\n function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n }\n );\n }\n\n decryptString(s) {\n const cipher = new this.StringCipherConstructor();\n let data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n }\n\n encryptString(s) {\n const cipher = new this.StringCipherConstructor();\n if (cipher instanceof AESBaseCipher) {\n // Append some chars equal to \"16 - (M mod 16)\"\n // where M is the string length (see section 7.6.2 in PDF specification)\n // to have a final string where the length is a multiple of 16.\n // Special note:\n // \"Note that the pad is present when M is evenly divisible by 16;\n // it contains 16 bytes of 0x10.\"\n const strLen = s.length;\n const pad = 16 - (strLen % 16);\n s += String.fromCharCode(pad).repeat(pad);\n\n // Generate an initialization vector\n const iv = new Uint8Array(16);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(iv);\n } else {\n for (let i = 0; i < 16; i++) {\n iv[i] = Math.floor(256 * Math.random());\n }\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data, iv);\n\n const buf = new Uint8Array(16 + data.length);\n buf.set(iv);\n buf.set(data, 16);\n\n return bytesToString(buf);\n }\n\n let data = stringToBytes(s);\n data = cipher.encrypt(data);\n return bytesToString(data);\n }\n}\n\nconst CipherTransformFactory = (function CipherTransformFactoryClosure() {\n const defaultPasswordBytes = new Uint8Array([\n 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\n 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\n 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\n ]);\n\n function createEncryptionKey20(\n revision,\n password,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n ) {\n if (password) {\n const passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n let pdfAlgorithm;\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (\n pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\n ) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (\n password.length &&\n pdfAlgorithm.checkOwnerPassword(\n password,\n ownerValidationSalt,\n uBytes,\n ownerPassword\n )\n ) {\n return pdfAlgorithm.getOwnerKey(\n password,\n ownerKeySalt,\n uBytes,\n ownerEncryption\n );\n }\n\n return null;\n }\n\n function prepareKeyData(\n fileId,\n password,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n ) {\n const hashDataSize = 40 + ownerPassword.length + fileId.length;\n const hashData = new Uint8Array(hashDataSize);\n let i = 0,\n j,\n n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n // as now the padded password in the hashData[0..i]\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n hashData[i++] = flags & 0xff;\n hashData[i++] = (flags >> 8) & 0xff;\n hashData[i++] = (flags >> 16) & 0xff;\n hashData[i++] = (flags >>> 24) & 0xff;\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n hashData[i++] = 0xff;\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n const encryptionKey = hash.subarray(0, keyLengthInBytes);\n let cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n const derivedKey = new Uint8Array(n);\n for (j = 1; j <= 19; ++j) {\n for (let k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n const hashData = new Uint8Array(32);\n let i = 0;\n const n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n let j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n let hash = calculateMD5(hashData, 0, i);\n const keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n let cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n const derivedKey = new Uint8Array(keyLengthInBytes);\n for (j = 19; j >= 0; j--) {\n for (let k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n\n const identityName = Name.get(\"Identity\");\n\n function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n const key = new Uint8Array(encryptionKey.length + 9);\n const n = encryptionKey.length;\n let i;\n for (i = 0; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n key[i++] = num & 0xff;\n key[i++] = (num >> 8) & 0xff;\n key[i++] = (num >> 16) & 0xff;\n key[i++] = gen & 0xff;\n key[i++] = (gen >> 8) & 0xff;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6c;\n key[i++] = 0x54;\n }\n const hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!(name instanceof Name)) {\n throw new FormatError(\"Invalid crypt filter name.\");\n }\n const cryptFilter = cf.get(name.name);\n let cfm;\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get(\"CFM\");\n }\n if (!cfm || cfm.name === \"None\") {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n if (cfm.name === \"V2\") {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(\n buildObjectKey(num, gen, key, /* isAes = */ false)\n );\n };\n }\n if (cfm.name === \"AESV2\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(\n buildObjectKey(num, gen, key, /* isAes = */ true)\n );\n };\n }\n if (cfm.name === \"AESV3\") {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError(\"Unknown crypto method\");\n }\n\n // eslint-disable-next-line no-shadow\n class CipherTransformFactory {\n constructor(dict, fileId, password) {\n const filter = dict.get(\"Filter\");\n if (!isName(filter, \"Standard\")) {\n throw new FormatError(\"unknown encryption method\");\n }\n this.filterName = filter.name;\n this.dict = dict;\n const algorithm = dict.get(\"V\");\n if (\n !Number.isInteger(algorithm) ||\n (algorithm !== 1 &&\n algorithm !== 2 &&\n algorithm !== 4 &&\n algorithm !== 5)\n ) {\n throw new FormatError(\"unsupported encryption algorithm\");\n }\n this.algorithm = algorithm;\n let keyLength = dict.get(\"Length\");\n if (!keyLength) {\n // Spec asks to rely on encryption dictionary's Length entry, however\n // some PDFs don't have it. Trying to recover.\n if (algorithm <= 3) {\n // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n keyLength = 40;\n } else {\n // Trying to find default handler -- it usually has Length.\n const cfDict = dict.get(\"CF\");\n const streamCryptoName = dict.get(\"StmF\");\n if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n cfDict.suppressEncryption = true; // See comment below.\n const handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = (handlerDict && handlerDict.get(\"Length\")) || 128;\n if (keyLength < 40) {\n // Sometimes it's incorrect value of bits, generators specify\n // bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (\n !Number.isInteger(keyLength) ||\n keyLength < 40 ||\n keyLength % 8 !== 0\n ) {\n throw new FormatError(\"invalid key length\");\n }\n\n // prepare keys\n const ownerPassword = stringToBytes(dict.get(\"O\")).subarray(0, 32);\n const userPassword = stringToBytes(dict.get(\"U\")).subarray(0, 32);\n const flags = dict.get(\"P\");\n const revision = dict.get(\"R\");\n // meaningful when V is 4 or 5\n const encryptMetadata =\n (algorithm === 4 || algorithm === 5) &&\n dict.get(\"EncryptMetadata\") !== false;\n this.encryptMetadata = encryptMetadata;\n\n const fileIdBytes = stringToBytes(fileId);\n let passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch (ex) {\n warn(\n \"CipherTransformFactory: \" +\n \"Unable to convert UTF8 encoded password.\"\n );\n }\n }\n passwordBytes = stringToBytes(password);\n }\n\n let encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(\n fileIdBytes,\n passwordBytes,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n } else {\n const ownerValidationSalt = stringToBytes(dict.get(\"O\")).subarray(\n 32,\n 40\n );\n const ownerKeySalt = stringToBytes(dict.get(\"O\")).subarray(40, 48);\n const uBytes = stringToBytes(dict.get(\"U\")).subarray(0, 48);\n const userValidationSalt = stringToBytes(dict.get(\"U\")).subarray(\n 32,\n 40\n );\n const userKeySalt = stringToBytes(dict.get(\"U\")).subarray(40, 48);\n const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n const userEncryption = stringToBytes(dict.get(\"UE\"));\n const perms = stringToBytes(dict.get(\"Perms\"));\n encryptionKey = createEncryptionKey20(\n revision,\n passwordBytes,\n ownerPassword,\n ownerValidationSalt,\n ownerKeySalt,\n uBytes,\n userPassword,\n userValidationSalt,\n userKeySalt,\n ownerEncryption,\n userEncryption,\n perms\n );\n }\n if (!encryptionKey && !password) {\n throw new PasswordException(\n \"No password given\",\n PasswordResponses.NEED_PASSWORD\n );\n } else if (!encryptionKey && password) {\n // Attempting use the password as an owner password\n const decodedPassword = decodeUserPassword(\n passwordBytes,\n ownerPassword,\n revision,\n keyLength\n );\n encryptionKey = prepareKeyData(\n fileIdBytes,\n decodedPassword,\n ownerPassword,\n userPassword,\n flags,\n revision,\n keyLength,\n encryptMetadata\n );\n }\n\n if (!encryptionKey) {\n throw new PasswordException(\n \"Incorrect Password\",\n PasswordResponses.INCORRECT_PASSWORD\n );\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n const cf = dict.get(\"CF\");\n if (cf instanceof Dict) {\n // The 'CF' dictionary itself should not be encrypted, and by setting\n // `suppressEncryption` we can prevent an infinite loop inside of\n // `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get(\"StmF\") || identityName;\n this.strf = dict.get(\"StrF\") || identityName;\n this.eff = dict.get(\"EFF\") || this.stmf;\n }\n }\n\n createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(\n buildCipherConstructor(\n this.cf,\n this.strf,\n num,\n gen,\n this.encryptionKey\n ),\n buildCipherConstructor(\n this.cf,\n this.stmf,\n num,\n gen,\n this.encryptionKey\n )\n );\n }\n // algorithms 1 and 2\n const key = buildObjectKey(\n num,\n gen,\n this.encryptionKey,\n /* isAes = */ false\n );\n const cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n }\n }\n\n return CipherTransformFactory;\n})();\n\nexport {\n AES128Cipher,\n AES256Cipher,\n ARCFourCipher,\n calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n CipherTransformFactory,\n PDF17,\n PDF20,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from \"./decode_stream.js\";\n\nconst chunkSize = 512;\n\nclass DecryptStream extends DecodeStream {\n constructor(str, maybeLength, decrypt) {\n super(maybeLength);\n\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n }\n\n readBlock() {\n let chunk;\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n const decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n const bufferLength = this.bufferLength,\n newLength = bufferLength + chunk.length,\n buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n }\n}\n\nexport { DecryptStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n collectActions,\n MissingDataException,\n PDF_VERSION_REGEXP,\n recoverJsURL,\n toRomanNumerals,\n XRefEntryException,\n} from \"./core_utils.js\";\nimport {\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FormatError,\n info,\n objectSize,\n PermissionFlag,\n shadow,\n stringToPDFString,\n stringToUTF8String,\n warn,\n} from \"../shared/util.js\";\nimport {\n Dict,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n} from \"./primitives.js\";\nimport { NameTree, NumberTree } from \"./name_number_tree.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { clearGlobalCaches } from \"./cleanup_helper.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { FileSpec } from \"./file_spec.js\";\nimport { GlobalImageCache } from \"./image_utils.js\";\nimport { MetadataParser } from \"./metadata_parser.js\";\nimport { StructTreeRoot } from \"./struct_tree.js\";\n\nfunction fetchDestination(dest) {\n if (dest instanceof Dict) {\n dest = dest.get(\"D\");\n }\n return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n constructor(pdfManager, xref) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n\n this._catDict = xref.getCatalogObj();\n if (!(this._catDict instanceof Dict)) {\n throw new FormatError(\"Catalog object is not a dictionary.\");\n }\n // Given that `XRef.parse` will both fetch *and* validate the /Pages-entry,\n // the following call must always succeed here:\n this.toplevelPagesDict; // eslint-disable-line no-unused-expressions\n\n this._actualNumPages = null;\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = new Map();\n this.standardFontDataCache = new Map();\n this.globalImageCache = new GlobalImageCache();\n this.pageKidsCountCache = new RefSetCache();\n this.pageIndexCache = new RefSetCache();\n this.nonBlendModesSet = new RefSet();\n }\n\n get version() {\n const version = this._catDict.get(\"Version\");\n if (version instanceof Name) {\n if (PDF_VERSION_REGEXP.test(version.name)) {\n return shadow(this, \"version\", version.name);\n }\n warn(`Invalid PDF catalog version: ${version.name}`);\n }\n return shadow(this, \"version\", null);\n }\n\n get lang() {\n const lang = this._catDict.get(\"Lang\");\n return shadow(\n this,\n \"lang\",\n typeof lang === \"string\" ? stringToPDFString(lang) : null\n );\n }\n\n /**\n * @type {boolean} `true` for pure XFA documents,\n * `false` for XFA Foreground documents.\n */\n get needsRendering() {\n const needsRendering = this._catDict.get(\"NeedsRendering\");\n return shadow(\n this,\n \"needsRendering\",\n typeof needsRendering === \"boolean\" ? needsRendering : false\n );\n }\n\n get collection() {\n let collection = null;\n try {\n const obj = this._catDict.get(\"Collection\");\n if (obj instanceof Dict && obj.size > 0) {\n collection = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch Collection entry; assuming no collection is present.\");\n }\n return shadow(this, \"collection\", collection);\n }\n\n get acroForm() {\n let acroForm = null;\n try {\n const obj = this._catDict.get(\"AcroForm\");\n if (obj instanceof Dict && obj.size > 0) {\n acroForm = obj;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n }\n return shadow(this, \"acroForm\", acroForm);\n }\n\n get acroFormRef() {\n const value = this._catDict.getRaw(\"AcroForm\");\n return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n }\n\n get metadata() {\n const streamRef = this._catDict.getRaw(\"Metadata\");\n if (!(streamRef instanceof Ref)) {\n return shadow(this, \"metadata\", null);\n }\n\n let metadata = null;\n try {\n const suppressEncryption = !(\n this.xref.encrypt && this.xref.encrypt.encryptMetadata\n );\n const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n if (stream instanceof BaseStream && stream.dict instanceof Dict) {\n const type = stream.dict.get(\"Type\");\n const subtype = stream.dict.get(\"Subtype\");\n\n if (isName(type, \"Metadata\") && isName(subtype, \"XML\")) {\n // XXX: This should examine the charset the XML document defines,\n // however since there are currently no real means to decode arbitrary\n // charsets, let's just hope that the author of the PDF was reasonable\n // enough to stick with the XML default charset, which is UTF-8.\n const data = stringToUTF8String(stream.getString());\n if (data) {\n metadata = new MetadataParser(data).serializable;\n }\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info(`Skipping invalid Metadata: \"${ex}\".`);\n }\n return shadow(this, \"metadata\", metadata);\n }\n\n get markInfo() {\n let markInfo = null;\n try {\n markInfo = this._readMarkInfo();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read mark info.\");\n }\n return shadow(this, \"markInfo\", markInfo);\n }\n\n /**\n * @private\n */\n _readMarkInfo() {\n const obj = this._catDict.get(\"MarkInfo\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n\n const markInfo = {\n Marked: false,\n UserProperties: false,\n Suspects: false,\n };\n for (const key in markInfo) {\n const value = obj.get(key);\n if (typeof value === \"boolean\") {\n markInfo[key] = value;\n }\n }\n\n return markInfo;\n }\n\n get structTreeRoot() {\n let structTree = null;\n try {\n structTree = this._readStructTreeRoot();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable read to structTreeRoot info.\");\n }\n return shadow(this, \"structTreeRoot\", structTree);\n }\n\n /**\n * @private\n */\n _readStructTreeRoot() {\n const obj = this._catDict.get(\"StructTreeRoot\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n const root = new StructTreeRoot(obj);\n root.init();\n return root;\n }\n\n get toplevelPagesDict() {\n const pagesObj = this._catDict.get(\"Pages\");\n if (!(pagesObj instanceof Dict)) {\n throw new FormatError(\"Invalid top-level pages dictionary.\");\n }\n return shadow(this, \"toplevelPagesDict\", pagesObj);\n }\n\n get documentOutline() {\n let obj = null;\n try {\n obj = this._readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read document outline.\");\n }\n return shadow(this, \"documentOutline\", obj);\n }\n\n /**\n * @private\n */\n _readDocumentOutline() {\n let obj = this._catDict.get(\"Outlines\");\n if (!(obj instanceof Dict)) {\n return null;\n }\n obj = obj.getRaw(\"First\");\n if (!(obj instanceof Ref)) {\n return null;\n }\n\n const root = { items: [] };\n const queue = [{ obj, parent: root }];\n // To avoid recursion, keep track of the already processed items.\n const processed = new RefSet();\n processed.put(obj);\n const xref = this.xref,\n blackColor = new Uint8ClampedArray(3);\n\n while (queue.length > 0) {\n const i = queue.shift();\n const outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has(\"Title\")) {\n throw new FormatError(\"Invalid outline item encountered.\");\n }\n\n const data = { url: null, dest: null, action: null };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl,\n docAttachments: this.attachments,\n });\n const title = outlineDict.get(\"Title\");\n const flags = outlineDict.get(\"F\") || 0;\n const color = outlineDict.getArray(\"C\");\n const count = outlineDict.get(\"Count\");\n let rgbColor = blackColor;\n\n // We only need to parse the color when it's valid, and non-default.\n if (\n Array.isArray(color) &&\n color.length === 3 &&\n (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\n ) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n\n const outlineItem = {\n action: data.action,\n attachment: data.attachment,\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n setOCGState: data.setOCGState,\n title: stringToPDFString(title),\n color: rgbColor,\n count: Number.isInteger(count) ? count : undefined,\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: [],\n };\n\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw(\"First\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: outlineItem });\n processed.put(obj);\n }\n obj = outlineDict.getRaw(\"Next\");\n if (obj instanceof Ref && !processed.has(obj)) {\n queue.push({ obj, parent: i.parent });\n processed.put(obj);\n }\n }\n return root.items.length > 0 ? root.items : null;\n }\n\n get permissions() {\n let permissions = null;\n try {\n permissions = this._readPermissions();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read permissions.\");\n }\n return shadow(this, \"permissions\", permissions);\n }\n\n /**\n * @private\n */\n _readPermissions() {\n const encrypt = this.xref.trailer.get(\"Encrypt\");\n if (!(encrypt instanceof Dict)) {\n return null;\n }\n\n let flags = encrypt.get(\"P\");\n if (typeof flags !== \"number\") {\n return null;\n }\n\n // PDF integer objects are represented internally in signed 2's complement\n // form. Therefore, convert the signed decimal integer to a signed 2's\n // complement binary integer so we can use regular bitwise operations on it.\n flags += 2 ** 32;\n\n const permissions = [];\n for (const key in PermissionFlag) {\n const value = PermissionFlag[key];\n if (flags & value) {\n permissions.push(value);\n }\n }\n return permissions;\n }\n\n get optionalContentConfig() {\n let config = null;\n try {\n const properties = this._catDict.get(\"OCProperties\");\n if (!properties) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const defaultConfig = properties.get(\"D\");\n if (!defaultConfig) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groupsData = properties.get(\"OCGs\");\n if (!Array.isArray(groupsData)) {\n return shadow(this, \"optionalContentConfig\", null);\n }\n const groups = [];\n const groupRefs = [];\n // Ensure all the optional content groups are valid.\n for (const groupRef of groupsData) {\n if (!(groupRef instanceof Ref)) {\n continue;\n }\n groupRefs.push(groupRef);\n const group = this.xref.fetchIfRef(groupRef);\n groups.push({\n id: groupRef.toString(),\n name:\n typeof group.get(\"Name\") === \"string\"\n ? stringToPDFString(group.get(\"Name\"))\n : null,\n intent:\n typeof group.get(\"Intent\") === \"string\"\n ? stringToPDFString(group.get(\"Intent\"))\n : null,\n });\n }\n config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n config.groups = groups;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`Unable to read optional content config: ${ex}`);\n }\n return shadow(this, \"optionalContentConfig\", config);\n }\n\n _readOptionalContentConfig(config, contentGroupRefs) {\n function parseOnOff(refs) {\n const onParsed = [];\n if (Array.isArray(refs)) {\n for (const value of refs) {\n if (!(value instanceof Ref)) {\n continue;\n }\n if (contentGroupRefs.includes(value)) {\n onParsed.push(value.toString());\n }\n }\n }\n return onParsed;\n }\n\n function parseOrder(refs, nestedLevels = 0) {\n if (!Array.isArray(refs)) {\n return null;\n }\n const order = [];\n\n for (const value of refs) {\n if (value instanceof Ref && contentGroupRefs.includes(value)) {\n parsedOrderRefs.put(value); // Handle \"hidden\" groups, see below.\n\n order.push(value.toString());\n continue;\n }\n // Handle nested /Order arrays (see e.g. issue 9462 and bug 1240641).\n const nestedOrder = parseNestedOrder(value, nestedLevels);\n if (nestedOrder) {\n order.push(nestedOrder);\n }\n }\n\n if (nestedLevels > 0) {\n return order;\n }\n const hiddenGroups = [];\n for (const groupRef of contentGroupRefs) {\n if (parsedOrderRefs.has(groupRef)) {\n continue;\n }\n hiddenGroups.push(groupRef.toString());\n }\n if (hiddenGroups.length) {\n order.push({ name: null, order: hiddenGroups });\n }\n\n return order;\n }\n\n function parseNestedOrder(ref, nestedLevels) {\n if (++nestedLevels > MAX_NESTED_LEVELS) {\n warn(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n return null;\n }\n const value = xref.fetchIfRef(ref);\n if (!Array.isArray(value)) {\n return null;\n }\n const nestedName = xref.fetchIfRef(value[0]);\n if (typeof nestedName !== \"string\") {\n return null;\n }\n const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n if (!nestedOrder || !nestedOrder.length) {\n return null;\n }\n return { name: stringToPDFString(nestedName), order: nestedOrder };\n }\n\n const xref = this.xref,\n parsedOrderRefs = new RefSet(),\n MAX_NESTED_LEVELS = 10;\n\n return {\n name:\n typeof config.get(\"Name\") === \"string\"\n ? stringToPDFString(config.get(\"Name\"))\n : null,\n creator:\n typeof config.get(\"Creator\") === \"string\"\n ? stringToPDFString(config.get(\"Creator\"))\n : null,\n baseState:\n config.get(\"BaseState\") instanceof Name\n ? config.get(\"BaseState\").name\n : null,\n on: parseOnOff(config.get(\"ON\")),\n off: parseOnOff(config.get(\"OFF\")),\n order: parseOrder(config.get(\"Order\")),\n groups: null,\n };\n }\n\n setActualNumPages(num = null) {\n this._actualNumPages = num;\n }\n\n get hasActualNumPages() {\n return this._actualNumPages !== null;\n }\n\n get _pagesCount() {\n const obj = this.toplevelPagesDict.get(\"Count\");\n if (!Number.isInteger(obj)) {\n throw new FormatError(\n \"Page count in top-level pages dictionary is not an integer.\"\n );\n }\n return shadow(this, \"_pagesCount\", obj);\n }\n\n get numPages() {\n return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n }\n\n get destinations() {\n const obj = this._readDests(),\n dests = Object.create(null);\n if (obj instanceof NameTree) {\n for (const [key, value] of obj.getAll()) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[stringToPDFString(key)] = dest;\n }\n }\n } else if (obj instanceof Dict) {\n obj.forEach(function (key, value) {\n const dest = fetchDestination(value);\n if (dest) {\n dests[key] = dest;\n }\n });\n }\n return shadow(this, \"destinations\", dests);\n }\n\n getDestination(id) {\n const obj = this._readDests();\n if (obj instanceof NameTree) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n // Fallback to checking the *entire* NameTree, in an attempt to handle\n // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\n const allDest = this.destinations[id];\n if (allDest) {\n warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n return allDest;\n }\n } else if (obj instanceof Dict) {\n const dest = fetchDestination(obj.get(id));\n if (dest) {\n return dest;\n }\n }\n return null;\n }\n\n /**\n * @private\n */\n _readDests() {\n const obj = this._catDict.get(\"Names\");\n if (obj && obj.has(\"Dests\")) {\n return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n } else if (this._catDict.has(\"Dests\")) {\n // Simple destination dictionary.\n return this._catDict.get(\"Dests\");\n }\n return undefined;\n }\n\n get pageLabels() {\n let obj = null;\n try {\n obj = this._readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(\"Unable to read page labels.\");\n }\n return shadow(this, \"pageLabels\", obj);\n }\n\n /**\n * @private\n */\n _readPageLabels() {\n const obj = this._catDict.getRaw(\"PageLabels\");\n if (!obj) {\n return null;\n }\n\n const pageLabels = new Array(this.numPages);\n let style = null,\n prefix = \"\";\n\n const numberTree = new NumberTree(obj, this.xref);\n const nums = numberTree.getAll();\n let currentLabel = \"\",\n currentIndex = 1;\n\n for (let i = 0, ii = this.numPages; i < ii; i++) {\n const labelDict = nums.get(i);\n\n if (labelDict !== undefined) {\n if (!(labelDict instanceof Dict)) {\n throw new FormatError(\"PageLabel is not a dictionary.\");\n }\n\n if (\n labelDict.has(\"Type\") &&\n !isName(labelDict.get(\"Type\"), \"PageLabel\")\n ) {\n throw new FormatError(\"Invalid type in PageLabel dictionary.\");\n }\n\n if (labelDict.has(\"S\")) {\n const s = labelDict.get(\"S\");\n if (!(s instanceof Name)) {\n throw new FormatError(\"Invalid style in PageLabel dictionary.\");\n }\n style = s.name;\n } else {\n style = null;\n }\n\n if (labelDict.has(\"P\")) {\n const p = labelDict.get(\"P\");\n if (typeof p !== \"string\") {\n throw new FormatError(\"Invalid prefix in PageLabel dictionary.\");\n }\n prefix = stringToPDFString(p);\n } else {\n prefix = \"\";\n }\n\n if (labelDict.has(\"St\")) {\n const st = labelDict.get(\"St\");\n if (!(Number.isInteger(st) && st >= 1)) {\n throw new FormatError(\"Invalid start in PageLabel dictionary.\");\n }\n currentIndex = st;\n } else {\n currentIndex = 1;\n }\n }\n\n switch (style) {\n case \"D\":\n currentLabel = currentIndex;\n break;\n case \"R\":\n case \"r\":\n currentLabel = toRomanNumerals(currentIndex, style === \"r\");\n break;\n case \"A\":\n case \"a\":\n const LIMIT = 26; // Use only the characters A-Z, or a-z.\n const A_UPPER_CASE = 0x41,\n A_LOWER_CASE = 0x61;\n\n const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n const letterIndex = currentIndex - 1;\n const character = String.fromCharCode(\n baseCharCode + (letterIndex % LIMIT)\n );\n currentLabel = character.repeat(Math.floor(letterIndex / LIMIT) + 1);\n break;\n default:\n if (style) {\n throw new FormatError(\n `Invalid style \"${style}\" in PageLabel dictionary.`\n );\n }\n currentLabel = \"\";\n }\n\n pageLabels[i] = prefix + currentLabel;\n currentIndex++;\n }\n return pageLabels;\n }\n\n get pageLayout() {\n const obj = this._catDict.get(\"PageLayout\");\n // Purposely use a non-standard default value, rather than 'SinglePage', to\n // allow differentiating between `undefined` and /SinglePage since that does\n // affect the Scroll mode (continuous/non-continuous) used in Adobe Reader.\n let pageLayout = \"\";\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"SinglePage\":\n case \"OneColumn\":\n case \"TwoColumnLeft\":\n case \"TwoColumnRight\":\n case \"TwoPageLeft\":\n case \"TwoPageRight\":\n pageLayout = obj.name;\n }\n }\n return shadow(this, \"pageLayout\", pageLayout);\n }\n\n get pageMode() {\n const obj = this._catDict.get(\"PageMode\");\n let pageMode = \"UseNone\"; // Default value.\n\n if (obj instanceof Name) {\n switch (obj.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"FullScreen\":\n case \"UseOC\":\n case \"UseAttachments\":\n pageMode = obj.name;\n }\n }\n return shadow(this, \"pageMode\", pageMode);\n }\n\n get viewerPreferences() {\n const obj = this._catDict.get(\"ViewerPreferences\");\n if (!(obj instanceof Dict)) {\n return shadow(this, \"viewerPreferences\", null);\n }\n let prefs = null;\n\n for (const key of obj.getKeys()) {\n const value = obj.get(key);\n let prefValue;\n\n switch (key) {\n case \"HideToolbar\":\n case \"HideMenubar\":\n case \"HideWindowUI\":\n case \"FitWindow\":\n case \"CenterWindow\":\n case \"DisplayDocTitle\":\n case \"PickTrayByPDFSize\":\n if (typeof value === \"boolean\") {\n prefValue = value;\n }\n break;\n case \"NonFullScreenPageMode\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"UseNone\":\n case \"UseOutlines\":\n case \"UseThumbs\":\n case \"UseOC\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"UseNone\";\n }\n }\n break;\n case \"Direction\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"L2R\":\n case \"R2L\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"L2R\";\n }\n }\n break;\n case \"ViewArea\":\n case \"ViewClip\":\n case \"PrintArea\":\n case \"PrintClip\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"MediaBox\":\n case \"CropBox\":\n case \"BleedBox\":\n case \"TrimBox\":\n case \"ArtBox\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"CropBox\";\n }\n }\n break;\n case \"PrintScaling\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"None\":\n case \"AppDefault\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"AppDefault\";\n }\n }\n break;\n case \"Duplex\":\n if (value instanceof Name) {\n switch (value.name) {\n case \"Simplex\":\n case \"DuplexFlipShortEdge\":\n case \"DuplexFlipLongEdge\":\n prefValue = value.name;\n break;\n default:\n prefValue = \"None\";\n }\n }\n break;\n case \"PrintPageRange\":\n // The number of elements must be even.\n if (Array.isArray(value) && value.length % 2 === 0) {\n const isValid = value.every((page, i, arr) => {\n return (\n Number.isInteger(page) &&\n page > 0 &&\n (i === 0 || page >= arr[i - 1]) &&\n page <= this.numPages\n );\n });\n if (isValid) {\n prefValue = value;\n }\n }\n break;\n case \"NumCopies\":\n if (Number.isInteger(value) && value > 0) {\n prefValue = value;\n }\n break;\n default:\n warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n continue;\n }\n\n if (prefValue === undefined) {\n warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n continue;\n }\n if (!prefs) {\n prefs = Object.create(null);\n }\n prefs[key] = prefValue;\n }\n return shadow(this, \"viewerPreferences\", prefs);\n }\n\n get openAction() {\n const obj = this._catDict.get(\"OpenAction\");\n const openAction = Object.create(null);\n\n if (obj instanceof Dict) {\n // Convert the OpenAction dictionary into a format that works with\n // `parseDestDictionary`, to avoid having to re-implement those checks.\n const destDict = new Dict(this.xref);\n destDict.set(\"A\", obj);\n\n const resultObj = { url: null, dest: null, action: null };\n Catalog.parseDestDictionary({ destDict, resultObj });\n\n if (Array.isArray(resultObj.dest)) {\n openAction.dest = resultObj.dest;\n } else if (resultObj.action) {\n openAction.action = resultObj.action;\n }\n } else if (Array.isArray(obj)) {\n openAction.dest = obj;\n }\n return shadow(\n this,\n \"openAction\",\n objectSize(openAction) > 0 ? openAction : null\n );\n }\n\n get attachments() {\n const obj = this._catDict.get(\"Names\");\n let attachments = null;\n\n if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n const fs = new FileSpec(value, this.xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(key)] = fs.serializable;\n }\n }\n return shadow(this, \"attachments\", attachments);\n }\n\n get xfaImages() {\n const obj = this._catDict.get(\"Names\");\n let xfaImages = null;\n\n if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n if (!xfaImages) {\n xfaImages = new Dict(this.xref);\n }\n xfaImages.set(stringToPDFString(key), value);\n }\n }\n return shadow(this, \"xfaImages\", xfaImages);\n }\n\n _collectJavaScript() {\n const obj = this._catDict.get(\"Names\");\n let javaScript = null;\n\n function appendIfJavaScriptDict(name, jsDict) {\n if (!(jsDict instanceof Dict)) {\n return;\n }\n if (!isName(jsDict.get(\"S\"), \"JavaScript\")) {\n return;\n }\n\n let js = jsDict.get(\"JS\");\n if (js instanceof BaseStream) {\n js = js.getString();\n } else if (typeof js !== \"string\") {\n return;\n }\n\n if (javaScript === null) {\n javaScript = new Map();\n }\n js = stringToPDFString(js).replace(/\\u0000/g, \"\");\n javaScript.set(name, js);\n }\n\n if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n for (const [key, value] of nameTree.getAll()) {\n appendIfJavaScriptDict(stringToPDFString(key), value);\n }\n }\n // Append OpenAction \"JavaScript\" actions, if any, to the JavaScript map.\n const openAction = this._catDict.get(\"OpenAction\");\n if (openAction) {\n appendIfJavaScriptDict(\"OpenAction\", openAction);\n }\n\n return javaScript;\n }\n\n get javaScript() {\n const javaScript = this._collectJavaScript();\n return shadow(\n this,\n \"javaScript\",\n javaScript ? [...javaScript.values()] : null\n );\n }\n\n get jsActions() {\n const javaScript = this._collectJavaScript();\n let actions = collectActions(\n this.xref,\n this._catDict,\n DocumentActionEventType\n );\n\n if (javaScript) {\n if (!actions) {\n actions = Object.create(null);\n }\n for (const [key, val] of javaScript) {\n if (key in actions) {\n actions[key].push(val);\n } else {\n actions[key] = [val];\n }\n }\n }\n return shadow(this, \"jsActions\", actions);\n }\n\n async fontFallback(id, handler) {\n const translatedFonts = await Promise.all(this.fontCache);\n\n for (const translatedFont of translatedFonts) {\n if (translatedFont.loadedName === id) {\n translatedFont.fallback(handler);\n return;\n }\n }\n }\n\n async cleanup(manuallyTriggered = false) {\n clearGlobalCaches();\n this.globalImageCache.clear(/* onlyData = */ manuallyTriggered);\n this.pageKidsCountCache.clear();\n this.pageIndexCache.clear();\n this.nonBlendModesSet.clear();\n\n const translatedFonts = await Promise.all(this.fontCache);\n\n for (const { dict } of translatedFonts) {\n delete dict.cacheKey;\n }\n this.fontCache.clear();\n this.builtInCMapCache.clear();\n this.standardFontDataCache.clear();\n }\n\n async getPageDict(pageIndex) {\n const nodesToVisit = [this.toplevelPagesDict];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const xref = this.xref,\n pageKidsCountCache = this.pageKidsCountCache,\n pageIndexCache = this.pageIndexCache;\n let currentPageIndex = 0;\n\n while (nodesToVisit.length) {\n const currentNode = nodesToVisit.pop();\n\n if (currentNode instanceof Ref) {\n const count = pageKidsCountCache.get(currentNode);\n // Skip nodes where the page can't be.\n if (count >= 0 && currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(currentNode)) {\n throw new FormatError(\"Pages tree contains circular reference.\");\n }\n visitedNodes.put(currentNode);\n\n const obj = await xref.fetchAsync(currentNode);\n if (obj instanceof Dict) {\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n // Cache the Page reference, since it can *greatly* improve\n // performance by reducing redundant lookups in long documents\n // where all nodes are found at *one* level of the tree.\n if (!pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n // Help improve performance of the `getPageIndex` method.\n if (!pageIndexCache.has(currentNode)) {\n pageIndexCache.put(currentNode, currentPageIndex);\n }\n\n if (currentPageIndex === pageIndex) {\n return [obj, currentNode];\n }\n currentPageIndex++;\n continue;\n }\n }\n nodesToVisit.push(obj);\n continue;\n }\n\n // Must be a child page dictionary.\n if (!(currentNode instanceof Dict)) {\n throw new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n );\n }\n const { objId } = currentNode;\n\n let count = currentNode.getRaw(\"Count\");\n if (count instanceof Ref) {\n count = await xref.fetchAsync(count);\n }\n if (Number.isInteger(count) && count >= 0) {\n // Cache the Kids count, since it can reduce redundant lookups in\n // documents where all nodes are found at *one* level of the tree.\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n\n // Skip nodes where the page can't be.\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n }\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n kids = await xref.fetchAsync(kids);\n }\n if (!Array.isArray(kids)) {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (fixes issue9540.pdf).\n let type = currentNode.getRaw(\"Type\");\n if (type instanceof Ref) {\n type = await xref.fetchAsync(type);\n }\n if (isName(type, \"Page\") || !currentNode.has(\"Kids\")) {\n if (currentPageIndex === pageIndex) {\n return [currentNode, null];\n }\n currentPageIndex++;\n continue;\n }\n\n throw new FormatError(\"Page dictionary kids object is not an array.\");\n }\n\n // Always check all `Kids` nodes, to avoid getting stuck in an empty\n // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n // and to ensure that we actually find the correct `Page` dict.\n for (let last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n\n throw new Error(`Page index ${pageIndex} not found.`);\n }\n\n /**\n * Eagerly fetches the entire /Pages-tree; should ONLY be used as a fallback.\n * @returns {Promise<Map>}\n */\n async getAllPageDicts(recoveryMode = false) {\n const { ignoreErrors } = this.pdfManager.evaluatorOptions;\n\n const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\n const visitedNodes = new RefSet();\n\n const pagesRef = this._catDict.getRaw(\"Pages\");\n if (pagesRef instanceof Ref) {\n visitedNodes.put(pagesRef);\n }\n const map = new Map(),\n xref = this.xref,\n pageIndexCache = this.pageIndexCache;\n let pageIndex = 0;\n\n function addPageDict(pageDict, pageRef) {\n // Help improve performance of the `getPageIndex` method.\n if (pageRef && !pageIndexCache.has(pageRef)) {\n pageIndexCache.put(pageRef, pageIndex);\n }\n\n map.set(pageIndex++, [pageDict, pageRef]);\n }\n function addPageError(error) {\n if (error instanceof XRefEntryException && !recoveryMode) {\n throw error;\n }\n if (recoveryMode && ignoreErrors && pageIndex === 0) {\n // Ensure that the viewer will always load (fixes issue15590.pdf).\n warn(`getAllPageDicts - Skipping invalid first page: \"${error}\".`);\n error = Dict.empty;\n }\n\n map.set(pageIndex++, [error, null]);\n }\n\n while (queue.length > 0) {\n const queueItem = queue.at(-1);\n const { currentNode, posInKids } = queueItem;\n\n let kids = currentNode.getRaw(\"Kids\");\n if (kids instanceof Ref) {\n try {\n kids = await xref.fetchAsync(kids);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (!Array.isArray(kids)) {\n addPageError(\n new FormatError(\"Page dictionary kids object is not an array.\")\n );\n break;\n }\n\n if (posInKids >= kids.length) {\n queue.pop();\n continue;\n }\n\n const kidObj = kids[posInKids];\n let obj;\n if (kidObj instanceof Ref) {\n // Prevent circular references in the /Pages tree.\n if (visitedNodes.has(kidObj)) {\n addPageError(\n new FormatError(\"Pages tree contains circular reference.\")\n );\n break;\n }\n visitedNodes.put(kidObj);\n\n try {\n obj = await xref.fetchAsync(kidObj);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n } else {\n // Prevent errors in corrupt PDF documents that violate the\n // specification by *inlining* Page dicts directly in the Kids\n // array, rather than using indirect objects (see issue9540.pdf).\n obj = kidObj;\n }\n if (!(obj instanceof Dict)) {\n addPageError(\n new FormatError(\n \"Page dictionary kid reference points to wrong type of object.\"\n )\n );\n break;\n }\n\n let type = obj.getRaw(\"Type\");\n if (type instanceof Ref) {\n try {\n type = await xref.fetchAsync(type);\n } catch (ex) {\n addPageError(ex);\n break;\n }\n }\n if (isName(type, \"Page\") || !obj.has(\"Kids\")) {\n addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\n } else {\n queue.push({ currentNode: obj, posInKids: 0 });\n }\n queueItem.posInKids++;\n }\n return map;\n }\n\n getPageIndex(pageRef) {\n const cachedPageIndex = this.pageIndexCache.get(pageRef);\n if (cachedPageIndex !== undefined) {\n return Promise.resolve(cachedPageIndex);\n }\n\n // The page tree nodes have the count of all the leaves below them. To get\n // how many pages are before we just have to walk up the tree and keep\n // adding the count of siblings to the left of the node.\n const xref = this.xref;\n\n function pagesBeforeRef(kidRef) {\n let total = 0,\n parentRef;\n\n return xref\n .fetchAsync(kidRef)\n .then(function (node) {\n if (\n isRefsEqual(kidRef, pageRef) &&\n !isDict(node, \"Page\") &&\n !(node instanceof Dict && !node.has(\"Type\") && node.has(\"Contents\"))\n ) {\n throw new FormatError(\n \"The reference does not point to a /Page dictionary.\"\n );\n }\n if (!node) {\n return null;\n }\n if (!(node instanceof Dict)) {\n throw new FormatError(\"Node must be a dictionary.\");\n }\n parentRef = node.getRaw(\"Parent\");\n return node.getAsync(\"Parent\");\n })\n .then(function (parent) {\n if (!parent) {\n return null;\n }\n if (!(parent instanceof Dict)) {\n throw new FormatError(\"Parent must be a dictionary.\");\n }\n return parent.getAsync(\"Kids\");\n })\n .then(function (kids) {\n if (!kids) {\n return null;\n }\n\n const kidPromises = [];\n let found = false;\n for (const kid of kids) {\n if (!(kid instanceof Ref)) {\n throw new FormatError(\"Kid must be a reference.\");\n }\n if (isRefsEqual(kid, kidRef)) {\n found = true;\n break;\n }\n kidPromises.push(\n xref.fetchAsync(kid).then(function (obj) {\n if (!(obj instanceof Dict)) {\n throw new FormatError(\"Kid node must be a dictionary.\");\n }\n if (obj.has(\"Count\")) {\n total += obj.get(\"Count\");\n } else {\n // Page leaf node.\n total++;\n }\n })\n );\n }\n if (!found) {\n throw new FormatError(\"Kid reference not found in parent's kids.\");\n }\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n let total = 0;\n const next = ref =>\n pagesBeforeRef(ref).then(args => {\n if (!args) {\n this.pageIndexCache.put(pageRef, total);\n return total;\n }\n const [count, parentRef] = args;\n total += count;\n return next(parentRef);\n });\n\n return next(pageRef);\n }\n\n get baseUrl() {\n const uri = this._catDict.get(\"URI\");\n if (uri instanceof Dict) {\n const base = uri.get(\"Base\");\n if (typeof base === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(base, null, {\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n return shadow(this, \"baseUrl\", absoluteUrl.href);\n }\n }\n }\n return shadow(this, \"baseUrl\", null);\n }\n\n /**\n * @typedef {Object} ParseDestDictionaryParameters\n * @property {Dict} destDict - The dictionary containing the destination.\n * @property {Object} resultObj - The object where the parsed destination\n * properties will be placed.\n * @property {string} [docBaseUrl] - The document base URL that is used when\n * attempting to recover valid absolute URLs from relative ones.\n * @property {Object} [docAttachments] - The document attachments (may not\n * exist in most PDF documents).\n */\n\n /**\n * Helper function used to parse the contents of destination dictionaries.\n * @param {ParseDestDictionaryParameters} params\n */\n static parseDestDictionary(params) {\n const destDict = params.destDict;\n if (!(destDict instanceof Dict)) {\n warn(\"parseDestDictionary: `destDict` must be a dictionary.\");\n return;\n }\n const resultObj = params.resultObj;\n if (typeof resultObj !== \"object\") {\n warn(\"parseDestDictionary: `resultObj` must be an object.\");\n return;\n }\n const docBaseUrl = params.docBaseUrl || null;\n const docAttachments = params.docAttachments || null;\n\n let action = destDict.get(\"A\"),\n url,\n dest;\n if (!(action instanceof Dict)) {\n if (destDict.has(\"Dest\")) {\n // A /Dest entry should *only* contain a Name or an Array, but some bad\n // PDF generators ignore that and treat it as an /A entry.\n action = destDict.get(\"Dest\");\n } else {\n action = destDict.get(\"AA\");\n if (action instanceof Dict) {\n if (action.has(\"D\")) {\n // MouseDown\n action = action.get(\"D\");\n } else if (action.has(\"U\")) {\n // MouseUp\n action = action.get(\"U\");\n }\n }\n }\n }\n\n if (action instanceof Dict) {\n const actionType = action.get(\"S\");\n if (!(actionType instanceof Name)) {\n warn(\"parseDestDictionary: Invalid type in Action dictionary.\");\n return;\n }\n const actionName = actionType.name;\n\n switch (actionName) {\n case \"ResetForm\":\n const flags = action.get(\"Flags\");\n const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n const fields = [];\n const refs = [];\n for (const obj of action.get(\"Fields\") || []) {\n if (obj instanceof Ref) {\n refs.push(obj.toString());\n } else if (typeof obj === \"string\") {\n fields.push(stringToPDFString(obj));\n }\n }\n resultObj.resetForm = { fields, refs, include };\n break;\n case \"URI\":\n url = action.get(\"URI\");\n if (url instanceof Name) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = \"/\" + url.name;\n }\n break;\n\n case \"GoTo\":\n dest = action.get(\"D\");\n break;\n\n case \"Launch\":\n // We neither want, nor can, support arbitrary 'Launch' actions.\n // However, in practice they are mostly used for linking to other PDF\n // files, which we thus attempt to support (utilizing `docBaseUrl`).\n /* falls through */\n\n case \"GoToR\":\n const urlDict = action.get(\"F\");\n if (urlDict instanceof Dict) {\n // We assume that we found a FileSpec dictionary\n // and fetch the URL without checking any further.\n url = urlDict.get(\"F\") || null;\n } else if (typeof urlDict === \"string\") {\n url = urlDict;\n }\n\n // NOTE: the destination is relative to the *remote* document.\n let remoteDest = action.get(\"D\");\n if (remoteDest) {\n if (remoteDest instanceof Name) {\n remoteDest = remoteDest.name;\n }\n if (typeof url === \"string\") {\n const baseUrl = url.split(\"#\")[0];\n if (typeof remoteDest === \"string\") {\n url = baseUrl + \"#\" + remoteDest;\n } else if (Array.isArray(remoteDest)) {\n url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n }\n }\n }\n // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n const newWindow = action.get(\"NewWindow\");\n if (typeof newWindow === \"boolean\") {\n resultObj.newWindow = newWindow;\n }\n break;\n\n case \"GoToE\":\n const target = action.get(\"T\");\n let attachment;\n\n if (docAttachments && target instanceof Dict) {\n const relationship = target.get(\"R\");\n const name = target.get(\"N\");\n\n if (isName(relationship, \"C\") && typeof name === \"string\") {\n attachment = docAttachments[stringToPDFString(name)];\n }\n }\n\n if (attachment) {\n resultObj.attachment = attachment;\n } else {\n warn(`parseDestDictionary - unimplemented \"GoToE\" action.`);\n }\n break;\n\n case \"Named\":\n const namedAction = action.get(\"N\");\n if (namedAction instanceof Name) {\n resultObj.action = namedAction.name;\n }\n break;\n\n case \"SetOCGState\":\n const state = action.get(\"State\");\n const preserveRB = action.get(\"PreserveRB\");\n\n if (!Array.isArray(state) || state.length === 0) {\n break;\n }\n const stateArr = [];\n\n for (const elem of state) {\n if (elem instanceof Name) {\n switch (elem.name) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n stateArr.push(elem.name);\n break;\n }\n } else if (elem instanceof Ref) {\n stateArr.push(elem.toString());\n }\n }\n\n if (stateArr.length !== state.length) {\n break; // Some of the original entries are not valid.\n }\n resultObj.setOCGState = {\n state: stateArr,\n preserveRB: typeof preserveRB === \"boolean\" ? preserveRB : true,\n };\n break;\n\n case \"JavaScript\":\n const jsAction = action.get(\"JS\");\n let js;\n\n if (jsAction instanceof BaseStream) {\n js = jsAction.getString();\n } else if (typeof jsAction === \"string\") {\n js = jsAction;\n }\n\n const jsURL = js && recoverJsURL(stringToPDFString(js));\n if (jsURL) {\n url = jsURL.url;\n resultObj.newWindow = jsURL.newWindow;\n break;\n }\n /* falls through */\n default:\n if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n // Don't bother the user with a warning for actions that require\n // scripting support, since those will be handled separately.\n break;\n }\n warn(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n break;\n }\n } else if (destDict.has(\"Dest\")) {\n // Simple destination.\n dest = destDict.get(\"Dest\");\n }\n\n if (typeof url === \"string\") {\n const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (dest instanceof Name) {\n dest = dest.name;\n }\n if (typeof dest === \"string\") {\n resultObj.dest = stringToPDFString(dest);\n } else if (Array.isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n }\n}\n\nexport { Catalog };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, RefSet } from \"./primitives.js\";\nimport { FormatError, unreachable, warn } from \"../shared/util.js\";\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n constructor(root, xref, type) {\n if (this.constructor === NameOrNumberTree) {\n unreachable(\"Cannot initialize NameOrNumberTree.\");\n }\n this.root = root;\n this.xref = xref;\n this._type = type;\n }\n\n getAll() {\n const map = new Map();\n if (!this.root) {\n return map;\n }\n const xref = this.xref;\n // Reading Name/Number tree.\n const processed = new RefSet();\n processed.put(this.root);\n const queue = [this.root];\n while (queue.length > 0) {\n const obj = xref.fetchIfRef(queue.shift());\n if (!(obj instanceof Dict)) {\n continue;\n }\n if (obj.has(\"Kids\")) {\n const kids = obj.get(\"Kids\");\n if (!Array.isArray(kids)) {\n continue;\n }\n for (const kid of kids) {\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n queue.push(kid);\n processed.put(kid);\n }\n continue;\n }\n const entries = obj.get(this._type);\n if (!Array.isArray(entries)) {\n continue;\n }\n for (let i = 0, ii = entries.length; i < ii; i += 2) {\n map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n }\n }\n return map;\n }\n\n get(key) {\n if (!this.root) {\n return null;\n }\n const xref = this.xref;\n let kidsOrEntries = xref.fetchIfRef(this.root);\n let loopCount = 0;\n const MAX_LEVELS = 10;\n\n // Perform a binary search to quickly find the entry that\n // contains the key we are looking for.\n while (kidsOrEntries.has(\"Kids\")) {\n if (++loopCount > MAX_LEVELS) {\n warn(`Search depth limit reached for \"${this._type}\" tree.`);\n return null;\n }\n\n const kids = kidsOrEntries.get(\"Kids\");\n if (!Array.isArray(kids)) {\n return null;\n }\n\n let l = 0,\n r = kids.length - 1;\n while (l <= r) {\n const m = (l + r) >> 1;\n const kid = xref.fetchIfRef(kids[m]);\n const limits = kid.get(\"Limits\");\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = kid;\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n\n // If we get here, then we have found the right entry. Now go through the\n // entries in the dictionary until we find the key we're looking for.\n const entries = kidsOrEntries.get(this._type);\n if (Array.isArray(entries)) {\n // Perform a binary search to reduce the lookup time.\n let l = 0,\n r = entries.length - 2;\n while (l <= r) {\n // Check only even indices (0, 2, 4, ...) because the\n // odd indices contain the actual data.\n const tmp = (l + r) >> 1,\n m = tmp + (tmp & 1);\n const currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n return null;\n }\n}\n\nclass NameTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Names\");\n }\n}\n\nclass NumberTree extends NameOrNumberTree {\n constructor(root, xref) {\n super(root, xref, \"Nums\");\n }\n}\n\nexport { NameTree, NumberTree };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { clearPrimitiveCaches } from \"./primitives.js\";\nimport { clearUnicodeCaches } from \"./unicode.js\";\n\nfunction clearGlobalCaches() {\n clearPrimitiveCaches();\n clearUnicodeCaches();\n}\n\nexport { clearGlobalCaches };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { Dict } from \"./primitives.js\";\n\nfunction pickPlatformItem(dict) {\n // Look for the filename in this order:\n // UF, F, Unix, Mac, DOS\n if (dict.has(\"UF\")) {\n return dict.get(\"UF\");\n } else if (dict.has(\"F\")) {\n return dict.get(\"F\");\n } else if (dict.has(\"Unix\")) {\n return dict.get(\"Unix\");\n } else if (dict.has(\"Mac\")) {\n return dict.get(\"Mac\");\n } else if (dict.has(\"DOS\")) {\n return dict.get(\"DOS\");\n }\n return null;\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nclass FileSpec {\n constructor(root, xref) {\n if (!(root instanceof Dict)) {\n return;\n }\n this.xref = xref;\n this.root = root;\n if (root.has(\"FS\")) {\n this.fs = root.get(\"FS\");\n }\n this.description = root.has(\"Desc\")\n ? stringToPDFString(root.get(\"Desc\"))\n : \"\";\n if (root.has(\"RF\")) {\n warn(\"Related file specifications are not supported\");\n }\n this.contentAvailable = true;\n if (!root.has(\"EF\")) {\n this.contentAvailable = false;\n warn(\"Non-embedded file specifications are not supported\");\n }\n }\n\n get filename() {\n if (!this._filename && this.root) {\n const filename = pickPlatformItem(this.root) || \"unnamed\";\n this._filename = stringToPDFString(filename)\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\//g, \"/\")\n .replace(/\\\\/g, \"/\");\n }\n return this._filename;\n }\n\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n }\n let content = null;\n if (this.contentRef) {\n const fileObj = this.xref.fetchIfRef(this.contentRef);\n if (fileObj instanceof BaseStream) {\n content = fileObj.getBytes();\n } else {\n warn(\n \"Embedded file specification points to non-existing/invalid content\"\n );\n }\n } else {\n warn(\"Embedded file specification does not have a content\");\n }\n return content;\n }\n\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n }\n}\n\nexport { FileSpec };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nclass MetadataParser {\n constructor(data) {\n // Ghostscript may produce invalid metadata, so try to repair that first.\n data = this._repair(data);\n\n // Convert the string to an XML document.\n const parser = new SimpleXMLParser({ lowerCaseName: true });\n const xmlDocument = parser.parseFromString(data);\n\n this._metadataMap = new Map();\n this._data = data;\n\n if (xmlDocument) {\n this._parse(xmlDocument);\n }\n }\n\n _repair(data) {\n // Start by removing any \"junk\" before the first tag (see issue 10395).\n return data\n .replace(/^[^<]+/, \"\")\n .replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n const bytes = codes\n .replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n })\n .replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n switch (name) {\n case \"amp\":\n return \"&\";\n case \"apos\":\n return \"'\";\n case \"gt\":\n return \">\";\n case \"lt\":\n return \"<\";\n case \"quot\":\n return '\"';\n }\n throw new Error(`_repair: ${name} isn't defined.`);\n });\n\n const charBuf = [];\n for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n if (\n code >= /* Space = */ 32 &&\n code < /* Delete = */ 127 &&\n code !== /* '<' = */ 60 &&\n code !== /* '>' = */ 62 &&\n code !== /* '&' = */ 38\n ) {\n charBuf.push(String.fromCharCode(code));\n } else {\n charBuf.push(\n \"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\"\n );\n }\n }\n return \">\" + charBuf.join(\"\");\n });\n }\n\n _getSequence(entry) {\n const name = entry.nodeName;\n if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n return null;\n }\n return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n }\n\n _parseArray(entry) {\n if (!entry.hasChildNodes()) {\n return;\n }\n // Child must be a Bag (unordered array) or a Seq.\n const [seqNode] = entry.childNodes;\n const sequence = this._getSequence(seqNode) || [];\n\n this._metadataMap.set(\n entry.nodeName,\n sequence.map(node => node.textContent.trim())\n );\n }\n\n _parse(xmlDocument) {\n let rdf = xmlDocument.documentElement;\n\n if (rdf.nodeName !== \"rdf:rdf\") {\n // Wrapped in <xmpmeta>\n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n rdf = rdf.nextSibling;\n }\n }\n\n if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n return;\n }\n\n for (const desc of rdf.childNodes) {\n if (desc.nodeName !== \"rdf:description\") {\n continue;\n }\n\n for (const entry of desc.childNodes) {\n const name = entry.nodeName;\n switch (name) {\n case \"#text\":\n continue;\n case \"dc:creator\":\n case \"dc:subject\":\n this._parseArray(entry);\n continue;\n }\n this._metadataMap.set(name, entry.textContent.trim());\n }\n }\n }\n\n get serializable() {\n return {\n parsedData: this._metadataMap,\n rawData: this._data,\n };\n }\n}\n\nexport { MetadataParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isName, Name, Ref } from \"./primitives.js\";\nimport { stringToPDFString, warn } from \"../shared/util.js\";\nimport { NumberTree } from \"./name_number_tree.js\";\n\nconst MAX_DEPTH = 40;\n\nconst StructElementType = {\n PAGE_CONTENT: \"PAGE_CONTENT\",\n STREAM_CONTENT: \"STREAM_CONTENT\",\n OBJECT: \"OBJECT\",\n ELEMENT: \"ELEMENT\",\n};\n\nclass StructTreeRoot {\n constructor(rootDict) {\n this.dict = rootDict;\n this.roleMap = new Map();\n }\n\n init() {\n this.readRoleMap();\n }\n\n readRoleMap() {\n const roleMapDict = this.dict.get(\"RoleMap\");\n if (!(roleMapDict instanceof Dict)) {\n return;\n }\n roleMapDict.forEach((key, value) => {\n if (!(value instanceof Name)) {\n return;\n }\n this.roleMap.set(key, value.name);\n });\n }\n}\n\n/**\n * Instead of loading the whole tree we load just the page's relevant structure\n * elements, which means we need a wrapper structure to represent the tree.\n */\nclass StructElementNode {\n constructor(tree, dict) {\n this.tree = tree;\n this.dict = dict;\n this.kids = [];\n this.parseKids();\n }\n\n get role() {\n const nameObj = this.dict.get(\"S\");\n const name = nameObj instanceof Name ? nameObj.name : \"\";\n const { root } = this.tree;\n if (root.roleMap.has(name)) {\n return root.roleMap.get(name);\n }\n return name;\n }\n\n parseKids() {\n let pageObjId = null;\n const objRef = this.dict.getRaw(\"Pg\");\n if (objRef instanceof Ref) {\n pageObjId = objRef.toString();\n }\n const kids = this.dict.get(\"K\");\n if (Array.isArray(kids)) {\n for (const kid of kids) {\n const element = this.parseKid(pageObjId, kid);\n if (element) {\n this.kids.push(element);\n }\n }\n } else {\n const element = this.parseKid(pageObjId, kids);\n if (element) {\n this.kids.push(element);\n }\n }\n }\n\n parseKid(pageObjId, kid) {\n // A direct link to content, the integer is an mcid.\n if (Number.isInteger(kid)) {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n\n return new StructElement({\n type: StructElementType.PAGE_CONTENT,\n mcid: kid,\n pageObjId,\n });\n }\n\n // Find the dictionary for the kid.\n let kidDict = null;\n if (kid instanceof Ref) {\n kidDict = this.dict.xref.fetch(kid);\n } else if (kid instanceof Dict) {\n kidDict = kid;\n }\n if (!kidDict) {\n return null;\n }\n const pageRef = kidDict.getRaw(\"Pg\");\n if (pageRef instanceof Ref) {\n pageObjId = pageRef.toString();\n }\n\n const type =\n kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n if (type === \"MCR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.STREAM_CONTENT,\n refObjId:\n kidDict.getRaw(\"Stm\") instanceof Ref\n ? kidDict.getRaw(\"Stm\").toString()\n : null,\n pageObjId,\n mcid: kidDict.get(\"MCID\"),\n });\n }\n\n if (type === \"OBJR\") {\n if (this.tree.pageDict.objId !== pageObjId) {\n return null;\n }\n return new StructElement({\n type: StructElementType.OBJECT,\n refObjId:\n kidDict.getRaw(\"Obj\") instanceof Ref\n ? kidDict.getRaw(\"Obj\").toString()\n : null,\n pageObjId,\n });\n }\n\n return new StructElement({\n type: StructElementType.ELEMENT,\n dict: kidDict,\n });\n }\n}\n\nclass StructElement {\n constructor({\n type,\n dict = null,\n mcid = null,\n pageObjId = null,\n refObjId = null,\n }) {\n this.type = type;\n this.dict = dict;\n this.mcid = mcid;\n this.pageObjId = pageObjId;\n this.refObjId = refObjId;\n this.parentNode = null;\n }\n}\n\nclass StructTreePage {\n constructor(structTreeRoot, pageDict) {\n this.root = structTreeRoot;\n this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n this.pageDict = pageDict;\n this.nodes = [];\n }\n\n parse() {\n if (!this.root || !this.rootDict) {\n return;\n }\n\n const parentTree = this.rootDict.get(\"ParentTree\");\n if (!parentTree) {\n return;\n }\n const id = this.pageDict.get(\"StructParents\");\n if (!Number.isInteger(id)) {\n return;\n }\n const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n const parentArray = numberTree.get(id);\n if (!Array.isArray(parentArray)) {\n return;\n }\n const map = new Map();\n for (const ref of parentArray) {\n if (ref instanceof Ref) {\n this.addNode(this.rootDict.xref.fetch(ref), map);\n }\n }\n }\n\n addNode(dict, map, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree MAX_DEPTH reached.\");\n return null;\n }\n\n if (map.has(dict)) {\n return map.get(dict);\n }\n\n const element = new StructElementNode(this, dict);\n map.set(dict, element);\n\n const parent = dict.get(\"P\");\n\n if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n if (!this.addTopLevelNode(dict, element)) {\n map.delete(dict);\n }\n return element;\n }\n\n const parentNode = this.addNode(parent, map, level + 1);\n if (!parentNode) {\n return element;\n }\n let save = false;\n for (const kid of parentNode.kids) {\n if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n kid.parentNode = element;\n save = true;\n }\n }\n if (!save) {\n map.delete(dict);\n }\n return element;\n }\n\n addTopLevelNode(dict, element) {\n const obj = this.rootDict.get(\"K\");\n if (!obj) {\n return false;\n }\n\n if (obj instanceof Dict) {\n if (obj.objId !== dict.objId) {\n return false;\n }\n this.nodes[0] = element;\n return true;\n }\n\n if (!Array.isArray(obj)) {\n return true;\n }\n let save = false;\n for (let i = 0; i < obj.length; i++) {\n const kidRef = obj[i];\n if (kidRef && kidRef.toString() === dict.objId) {\n this.nodes[i] = element;\n save = true;\n }\n }\n return save;\n }\n\n /**\n * Convert the tree structure into a simplified object literal that can\n * be sent to the main thread.\n * @returns {Object}\n */\n get serializable() {\n function nodeToSerializable(node, parent, level = 0) {\n if (level > MAX_DEPTH) {\n warn(\"StructTree too deep to be fully serialized.\");\n return;\n }\n const obj = Object.create(null);\n obj.role = node.role;\n obj.children = [];\n parent.children.push(obj);\n const alt = node.dict.get(\"Alt\");\n if (typeof alt === \"string\") {\n obj.alt = stringToPDFString(alt);\n }\n const lang = node.dict.get(\"Lang\");\n if (typeof lang === \"string\") {\n obj.lang = stringToPDFString(lang);\n }\n\n for (const kid of node.kids) {\n const kidElement =\n kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n if (kidElement) {\n nodeToSerializable(kidElement, obj, level + 1);\n continue;\n } else if (\n kid.type === StructElementType.PAGE_CONTENT ||\n kid.type === StructElementType.STREAM_CONTENT\n ) {\n obj.children.push({\n type: \"content\",\n id: `page${kid.pageObjId}_mcid${kid.mcid}`,\n });\n } else if (kid.type === StructElementType.OBJECT) {\n obj.children.push({\n type: \"object\",\n id: kid.refObjId,\n });\n }\n }\n }\n\n const root = Object.create(null);\n root.children = [];\n root.role = \"Root\";\n for (const child of this.nodes) {\n if (!child) {\n continue;\n }\n nodeToSerializable(child, root);\n }\n return root;\n }\n}\n\nexport { StructTreePage, StructTreeRoot };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MissingDataException } from \"./core_utils.js\";\nimport { warn } from \"../shared/util.js\";\n\nfunction mayHaveChildren(value) {\n return (\n value instanceof Ref ||\n value instanceof Dict ||\n value instanceof BaseStream ||\n Array.isArray(value)\n );\n}\n\nfunction addChildren(node, nodesToVisit) {\n if (node instanceof Dict) {\n node = node.getRawValues();\n } else if (node instanceof BaseStream) {\n node = node.dict.getRawValues();\n } else if (!Array.isArray(node)) {\n return;\n }\n for (const rawValue of node) {\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n}\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nclass ObjectLoader {\n constructor(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n }\n\n async load() {\n // Don't walk the graph if all the data is already loaded.\n if (this.xref.stream.isDataLoaded) {\n return undefined;\n }\n\n const { keys, dict } = this;\n this.refSet = new RefSet();\n // Setup the initial nodes to visit.\n const nodesToVisit = [];\n for (const key of keys) {\n const rawValue = dict.getRaw(key);\n // Skip nodes that are guaranteed to be empty.\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n return this._walk(nodesToVisit);\n }\n\n async _walk(nodesToVisit) {\n const nodesToRevisit = [];\n const pendingRequests = [];\n // DFS walk of the object graph.\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n // Only references or chunked streams can cause missing data exceptions.\n if (currentNode instanceof Ref) {\n // Skip nodes that have already been visited.\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n this.refSet = null;\n\n const { manager } = this.xref.stream;\n return manager.requestAllChunks();\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end });\n }\n }\n if (currentNode instanceof BaseStream) {\n const baseStreams = currentNode.getBaseStreams();\n if (baseStreams) {\n let foundMissingData = false;\n for (const stream of baseStreams) {\n if (stream.isDataLoaded) {\n continue;\n }\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end });\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n await this.xref.stream.manager.requestRanges(pendingRequests);\n\n for (const node of nodesToRevisit) {\n // Remove any reference nodes from the current `RefSet` so they\n // aren't skipped when we revist them.\n if (node instanceof Ref) {\n this.refSet.remove(node);\n }\n }\n return this._walk(nodesToRevisit);\n }\n // Everything is loaded.\n this.refSet = null;\n return undefined;\n }\n}\n\nexport { ObjectLoader };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $globalData,\n $nodeName,\n $text,\n $toHTML,\n $toPages,\n} from \"./xfa_object.js\";\nimport { Binder } from \"./bind.js\";\nimport { DataHandler } from \"./data.js\";\nimport { FontFinder } from \"./fonts.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\nimport { XFAParser } from \"./parser.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nclass XFAFactory {\n constructor(data) {\n try {\n this.root = new XFAParser().parse(XFAFactory._createDocument(data));\n const binder = new Binder(this.root);\n this.form = binder.bind();\n this.dataHandler = new DataHandler(this.root, binder.getData());\n this.form[$globalData].template = this.form;\n } catch (e) {\n warn(`XFA - an error occurred during parsing and binding: ${e}`);\n }\n }\n\n isValid() {\n return this.root && this.form;\n }\n\n /**\n * In order to avoid to block the event loop, the conversion\n * into pages is made asynchronously.\n */\n _createPagesHelper() {\n const iterator = this.form[$toPages]();\n return new Promise((resolve, reject) => {\n const nextIteration = () => {\n try {\n const value = iterator.next();\n if (value.done) {\n resolve(value.value);\n } else {\n setTimeout(nextIteration, 0);\n }\n } catch (e) {\n reject(e);\n }\n };\n setTimeout(nextIteration, 0);\n });\n }\n\n async _createPages() {\n try {\n this.pages = await this._createPagesHelper();\n this.dims = this.pages.children.map(c => {\n const { width, height } = c.attributes.style;\n return [0, 0, parseInt(width), parseInt(height)];\n });\n } catch (e) {\n warn(`XFA - an error occurred during layout: ${e}`);\n }\n }\n\n getBoundingBox(pageIndex) {\n return this.dims[pageIndex];\n }\n\n async getNumPages() {\n if (!this.pages) {\n await this._createPages();\n }\n return this.dims.length;\n }\n\n setImages(images) {\n this.form[$globalData].images = images;\n }\n\n setFonts(fonts) {\n this.form[$globalData].fontFinder = new FontFinder(fonts);\n const missingFonts = [];\n for (let typeface of this.form[$globalData].usedTypefaces) {\n typeface = stripQuotes(typeface);\n const font = this.form[$globalData].fontFinder.find(typeface);\n if (!font) {\n missingFonts.push(typeface);\n }\n }\n\n if (missingFonts.length > 0) {\n return missingFonts;\n }\n\n return null;\n }\n\n appendFonts(fonts, reallyMissingFonts) {\n this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\n }\n\n async getPages() {\n if (!this.pages) {\n await this._createPages();\n }\n const pages = this.pages;\n this.pages = null;\n return pages;\n }\n\n serializeData(storage) {\n return this.dataHandler.serialize(storage);\n }\n\n static _createDocument(data) {\n if (!data[\"/xdp:xdp\"]) {\n return data[\"xdp:xdp\"];\n }\n return Object.values(data).join(\"\");\n }\n\n static getRichTextAsHtml(rc) {\n if (!rc || typeof rc !== \"string\") {\n return null;\n }\n\n try {\n let root = new XFAParser(XhtmlNamespace, /* richText */ true).parse(rc);\n if (![\"body\", \"xhtml\"].includes(root[$nodeName])) {\n // No body, so create one.\n const newRoot = XhtmlNamespace.body({});\n newRoot[$appendChild](root);\n root = newRoot;\n }\n\n const result = root[$toHTML]();\n if (!result.success) {\n return null;\n }\n\n const { html } = result;\n const { attributes } = html;\n if (attributes) {\n if (attributes.class) {\n attributes.class = attributes.class.filter(\n attr => !attr.startsWith(\"xfa\")\n );\n }\n attributes.dir = \"auto\";\n }\n\n return { html, str: root[$text]() };\n } catch (e) {\n warn(`XFA - an error occurred during parsing of rich text: ${e}`);\n }\n return null;\n }\n}\n\nexport { XFAFactory };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInteger, getKeyword, HTMLResult } from \"./utils.js\";\nimport { shadow, utf8StringToString, warn } from \"../../shared/util.js\";\nimport { encodeToXmlString } from \"../core_utils.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { searchNode } from \"./som.js\";\n\n// We use these symbols to avoid name conflict between tags\n// and properties/methods names.\nconst $acceptWhitespace = Symbol();\nconst $addHTML = Symbol();\nconst $appendChild = Symbol();\nconst $childrenToHTML = Symbol();\nconst $clean = Symbol();\nconst $cleanPage = Symbol();\nconst $cleanup = Symbol();\nconst $clone = Symbol();\nconst $consumed = Symbol();\nconst $content = Symbol(\"content\");\nconst $data = Symbol(\"data\");\nconst $dump = Symbol();\nconst $extra = Symbol(\"extra\");\nconst $finalize = Symbol();\nconst $flushHTML = Symbol();\nconst $getAttributeIt = Symbol();\nconst $getAttributes = Symbol();\nconst $getAvailableSpace = Symbol();\nconst $getChildrenByClass = Symbol();\nconst $getChildrenByName = Symbol();\nconst $getChildrenByNameIt = Symbol();\nconst $getDataValue = Symbol();\nconst $getExtra = Symbol();\nconst $getRealChildrenByNameIt = Symbol();\nconst $getChildren = Symbol();\nconst $getContainedChildren = Symbol();\nconst $getNextPage = Symbol();\nconst $getSubformParent = Symbol();\nconst $getParent = Symbol();\nconst $getTemplateRoot = Symbol();\nconst $globalData = Symbol();\nconst $hasSettableValue = Symbol();\nconst $ids = Symbol();\nconst $indexOf = Symbol();\nconst $insertAt = Symbol();\nconst $isCDATAXml = Symbol();\nconst $isBindable = Symbol();\nconst $isDataValue = Symbol();\nconst $isDescendent = Symbol();\nconst $isNsAgnostic = Symbol();\nconst $isSplittable = Symbol();\nconst $isThereMoreWidth = Symbol();\nconst $isTransparent = Symbol();\nconst $isUsable = Symbol();\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nconst $nodeName = Symbol(\"nodeName\");\nconst $nsAttributes = Symbol();\nconst $onChild = Symbol();\nconst $onChildCheck = Symbol();\nconst $onText = Symbol();\nconst $pushGlyphs = Symbol();\nconst $popPara = Symbol();\nconst $pushPara = Symbol();\nconst $removeChild = Symbol();\nconst $root = Symbol(\"root\");\nconst $resolvePrototypes = Symbol();\nconst $searchNode = Symbol();\nconst $setId = Symbol();\nconst $setSetAttributes = Symbol();\nconst $setValue = Symbol();\nconst $tabIndex = Symbol();\nconst $text = Symbol();\nconst $toPages = Symbol();\nconst $toHTML = Symbol();\nconst $toString = Symbol();\nconst $toStyle = Symbol();\nconst $uid = Symbol(\"uid\");\n\nconst _applyPrototype = Symbol();\nconst _attributes = Symbol();\nconst _attributeNames = Symbol();\nconst _children = Symbol(\"_children\");\nconst _cloneAttribute = Symbol();\nconst _dataValue = Symbol();\nconst _defaultValue = Symbol();\nconst _filteredChildrenGenerator = Symbol();\nconst _getPrototype = Symbol();\nconst _getUnsetAttributes = Symbol();\nconst _hasChildren = Symbol();\nconst _max = Symbol();\nconst _options = Symbol();\nconst _parent = Symbol(\"parent\");\nconst _resolvePrototypesHelper = Symbol();\nconst _setAttributes = Symbol();\nconst _validator = Symbol();\n\nlet uid = 0;\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nclass XFAObject {\n constructor(nsId, name, hasChildren = false) {\n this[$namespaceId] = nsId;\n this[$nodeName] = name;\n this[_hasChildren] = hasChildren;\n this[_parent] = null;\n this[_children] = [];\n this[$uid] = `${name}${uid++}`;\n this[$globalData] = null;\n }\n\n [$onChild](child) {\n if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n return false;\n }\n\n const name = child[$nodeName];\n const node = this[name];\n\n if (node instanceof XFAObjectArray) {\n if (node.push(child)) {\n this[$appendChild](child);\n return true;\n }\n } else {\n // IRL it's possible to already have a node.\n // So just replace it with the last version.\n if (node !== null) {\n this[$removeChild](node);\n }\n this[name] = child;\n this[$appendChild](child);\n return true;\n }\n\n let id = \"\";\n if (this.id) {\n id = ` (id: ${this.id})`;\n } else if (this.name) {\n id = ` (name: ${this.name} ${this.h.value})`;\n }\n warn(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n return false;\n }\n\n [$onChildCheck](child) {\n return (\n this.hasOwnProperty(child[$nodeName]) &&\n child[$namespaceId] === this[$namespaceId]\n );\n }\n\n [$isNsAgnostic]() {\n return false;\n }\n\n [$acceptWhitespace]() {\n return false;\n }\n\n [$isCDATAXml]() {\n return false;\n }\n\n [$isBindable]() {\n return false;\n }\n\n [$popPara]() {\n if (this.para) {\n this[$getTemplateRoot]()[$extra].paraStack.pop();\n }\n }\n\n [$pushPara]() {\n this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n }\n\n [$setId](ids) {\n if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\n ids.set(this.id, this);\n }\n }\n\n [$getTemplateRoot]() {\n return this[$globalData].template;\n }\n\n [$isSplittable]() {\n return false;\n }\n\n /**\n Return true if this node (typically a container)\n can provide more width during layout.\n The goal is to help to know what a descendant must\n do in case of horizontal overflow.\n */\n [$isThereMoreWidth]() {\n return false;\n }\n\n [$appendChild](child) {\n child[_parent] = this;\n this[_children].push(child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n [$removeChild](child) {\n const i = this[_children].indexOf(child);\n this[_children].splice(i, 1);\n }\n\n [$hasSettableValue]() {\n return this.hasOwnProperty(\"value\");\n }\n\n [$setValue](_) {}\n\n [$onText](_) {}\n\n [$finalize]() {}\n\n [$clean](builder) {\n delete this[_hasChildren];\n if (this[$cleanup]) {\n builder.clean(this[$cleanup]);\n delete this[$cleanup];\n }\n }\n\n [$indexOf](child) {\n return this[_children].indexOf(child);\n }\n\n [$insertAt](i, child) {\n child[_parent] = this;\n this[_children].splice(i, 0, child);\n if (!child[$globalData] && this[$globalData]) {\n child[$globalData] = this[$globalData];\n }\n }\n\n /**\n * If true the element is transparent when searching a node using\n * a SOM expression which means that looking for \"foo.bar\" in\n * <... name=\"foo\"><toto><titi><... name=\"bar\"></titi></toto>...\n * is fine because toto and titi are transparent.\n */\n [$isTransparent]() {\n return !this.name;\n }\n\n [$lastAttribute]() {\n return \"\";\n }\n\n [$text]() {\n if (this[_children].length === 0) {\n return this[$content];\n }\n return this[_children].map(c => c[$text]()).join(\"\");\n }\n\n get [_attributeNames]() {\n // Lazily get attributes names\n const proto = Object.getPrototypeOf(this);\n if (!proto._attributes) {\n const attributes = (proto._attributes = new Set());\n for (const name of Object.getOwnPropertyNames(this)) {\n if (\n this[name] === null ||\n this[name] instanceof XFAObject ||\n this[name] instanceof XFAObjectArray\n ) {\n break;\n }\n attributes.add(name);\n }\n }\n return shadow(this, _attributeNames, proto._attributes);\n }\n\n [$isDescendent](parent) {\n let node = this;\n while (node) {\n if (node === parent) {\n return true;\n }\n node = node[$getParent]();\n }\n return false;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$getSubformParent]() {\n return this[$getParent]();\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[name];\n }\n\n [$dump]() {\n const dumped = Object.create(null);\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n const value = this[name];\n if (value === null) {\n continue;\n }\n if (value instanceof XFAObject) {\n dumped[name] = value[$dump]();\n } else if (value instanceof XFAObjectArray) {\n if (!value.isEmpty()) {\n dumped[name] = value.dump();\n }\n } else {\n dumped[name] = value;\n }\n }\n\n return dumped;\n }\n\n [$toStyle]() {\n return null;\n }\n\n [$toHTML]() {\n return HTMLResult.EMPTY;\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in Subform and SubformSet.\n for (const node of this[$getChildren]()) {\n yield node;\n }\n }\n\n *[_filteredChildrenGenerator](filter, include) {\n for (const node of this[$getContainedChildren]()) {\n if (!filter || include === filter.has(node[$nodeName])) {\n const availableSpace = this[$getAvailableSpace]();\n const res = node[$toHTML](availableSpace);\n if (!res.success) {\n this[$extra].failingNode = node;\n }\n yield res;\n }\n }\n }\n\n [$flushHTML]() {\n return null;\n }\n\n [$addHTML](html, bbox) {\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {}\n\n [$childrenToHTML]({ filter = null, include = true }) {\n if (!this[$extra].generator) {\n this[$extra].generator = this[_filteredChildrenGenerator](\n filter,\n include\n );\n } else {\n const availableSpace = this[$getAvailableSpace]();\n const res = this[$extra].failingNode[$toHTML](availableSpace);\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n delete this[$extra].failingNode;\n }\n\n while (true) {\n const gen = this[$extra].generator.next();\n if (gen.done) {\n break;\n }\n const res = gen.value;\n if (!res.success) {\n return res;\n }\n if (res.html) {\n this[$addHTML](res.html, res.bbox);\n }\n }\n\n this[$extra].generator = null;\n\n return HTMLResult.EMPTY;\n }\n\n [$setSetAttributes](attributes) {\n // Just keep set attributes because it can be used in a proto.\n this[_setAttributes] = new Set(Object.keys(attributes));\n }\n\n /**\n * Get attribute names which have been set in the proto but not in this.\n */\n [_getUnsetAttributes](protoAttributes) {\n const allAttr = this[_attributeNames];\n const setAttr = this[_setAttributes];\n return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n }\n\n /**\n * Update the node with properties coming from a prototype and apply\n * this function recursively to all children.\n */\n [$resolvePrototypes](ids, ancestors = new Set()) {\n for (const child of this[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n\n [_resolvePrototypesHelper](ids, ancestors) {\n const proto = this[_getPrototype](ids, ancestors);\n if (proto) {\n // _applyPrototype will apply $resolvePrototypes with correct ancestors\n // to avoid infinite loop.\n this[_applyPrototype](proto, ids, ancestors);\n } else {\n this[$resolvePrototypes](ids, ancestors);\n }\n }\n\n [_getPrototype](ids, ancestors) {\n const { use, usehref } = this;\n if (!use && !usehref) {\n return null;\n }\n\n let proto = null;\n let somExpression = null;\n let id = null;\n let ref = use;\n\n // If usehref and use are non-empty then use usehref.\n if (usehref) {\n ref = usehref;\n // Href can be one of the following:\n // - #ID\n // - URI#ID\n // - #som(expression)\n // - URI#som(expression)\n // - URI\n // For now we don't handle URI other than \".\" (current document).\n if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n } else if (usehref.startsWith(\"#\")) {\n id = usehref.slice(1);\n } else if (usehref.startsWith(\".#\")) {\n id = usehref.slice(2);\n }\n } else if (use.startsWith(\"#\")) {\n id = use.slice(1);\n } else {\n somExpression = use;\n }\n\n this.use = this.usehref = \"\";\n if (id) {\n proto = ids.get(id);\n } else {\n proto = searchNode(\n ids.get($root),\n this,\n somExpression,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (proto) {\n proto = proto[0];\n }\n }\n\n if (!proto) {\n warn(`XFA - Invalid prototype reference: ${ref}.`);\n return null;\n }\n\n if (proto[$nodeName] !== this[$nodeName]) {\n warn(\n `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\n );\n return null;\n }\n\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return null;\n }\n\n ancestors.add(proto);\n\n // The prototype can have a \"use\" attribute itself.\n const protoProto = proto[_getPrototype](ids, ancestors);\n if (protoProto) {\n proto[_applyPrototype](protoProto, ids, ancestors);\n }\n\n // The prototype can have a child which itself has a \"use\" property.\n proto[$resolvePrototypes](ids, ancestors);\n\n ancestors.delete(proto);\n\n return proto;\n }\n\n [_applyPrototype](proto, ids, ancestors) {\n if (ancestors.has(proto)) {\n // We've a cycle so break it.\n warn(`XFA - Cycle detected in prototypes use.`);\n return;\n }\n\n if (!this[$content] && proto[$content]) {\n this[$content] = proto[$content];\n }\n\n const newAncestors = new Set(ancestors);\n newAncestors.add(proto);\n\n for (const unsetAttrName of this[_getUnsetAttributes](\n proto[_setAttributes]\n )) {\n this[unsetAttrName] = proto[unsetAttrName];\n if (this[_setAttributes]) {\n this[_setAttributes].add(unsetAttrName);\n }\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n continue;\n }\n const value = this[name];\n const protoValue = proto[name];\n\n if (value instanceof XFAObjectArray) {\n for (const child of value[_children]) {\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n\n for (\n let i = value[_children].length, ii = protoValue[_children].length;\n i < ii;\n i++\n ) {\n const child = proto[_children][i][$clone]();\n if (value.push(child)) {\n child[_parent] = this;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n } else {\n // No need to continue: other nodes will be rejected.\n break;\n }\n }\n continue;\n }\n\n if (value !== null) {\n value[$resolvePrototypes](ids, ancestors);\n if (protoValue) {\n // protoValue must be treated as a prototype for value.\n value[_applyPrototype](protoValue, ids, ancestors);\n }\n continue;\n }\n\n if (protoValue !== null) {\n const child = protoValue[$clone]();\n child[_parent] = this;\n this[name] = child;\n this[_children].push(child);\n child[_resolvePrototypesHelper](ids, ancestors);\n }\n }\n }\n\n static [_cloneAttribute](obj) {\n if (Array.isArray(obj)) {\n return obj.map(x => XFAObject[_cloneAttribute](x));\n }\n if (typeof obj === \"object\" && obj !== null) {\n return Object.assign({}, obj);\n }\n return obj;\n }\n\n [$clone]() {\n const clone = Object.create(Object.getPrototypeOf(this));\n for (const $symbol of Object.getOwnPropertySymbols(this)) {\n try {\n clone[$symbol] = this[$symbol];\n } catch (_) {\n shadow(clone, $symbol, this[$symbol]);\n }\n }\n clone[$uid] = `${clone[$nodeName]}${uid++}`;\n clone[_children] = [];\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (this[_attributeNames].has(name)) {\n clone[name] = XFAObject[_cloneAttribute](this[name]);\n continue;\n }\n const value = this[name];\n if (value instanceof XFAObjectArray) {\n clone[name] = new XFAObjectArray(value[_max]);\n } else {\n clone[name] = null;\n }\n }\n\n for (const child of this[_children]) {\n const name = child[$nodeName];\n const clonedChild = child[$clone]();\n clone[_children].push(clonedChild);\n clonedChild[_parent] = clone;\n if (clone[name] === null) {\n clone[name] = clonedChild;\n } else {\n clone[name][_children].push(clonedChild);\n }\n }\n\n return clone;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getChildrenByClass](name) {\n return this[name];\n }\n\n [$getChildrenByName](name, allTransparent, first = true) {\n return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n }\n\n *[$getChildrenByNameIt](name, allTransparent, first = true) {\n if (name === \"parent\") {\n yield this[_parent];\n return;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (child.name === name) {\n yield child;\n }\n\n if (allTransparent || child[$isTransparent]()) {\n yield* child[$getChildrenByNameIt](name, allTransparent, false);\n }\n }\n\n if (first && this[_attributeNames].has(name)) {\n yield new XFAAttribute(this, name, this[name]);\n }\n }\n}\n\nclass XFAObjectArray {\n constructor(max = Infinity) {\n this[_max] = max;\n this[_children] = [];\n }\n\n push(child) {\n const len = this[_children].length;\n if (len <= this[_max]) {\n this[_children].push(child);\n return true;\n }\n warn(\n `XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`\n );\n return false;\n }\n\n isEmpty() {\n return this[_children].length === 0;\n }\n\n dump() {\n return this[_children].length === 1\n ? this[_children][0][$dump]()\n : this[_children].map(x => x[$dump]());\n }\n\n [$clone]() {\n const clone = new XFAObjectArray(this[_max]);\n clone[_children] = this[_children].map(c => c[$clone]());\n return clone;\n }\n\n get children() {\n return this[_children];\n }\n\n clear() {\n this[_children].length = 0;\n }\n}\n\nclass XFAAttribute {\n constructor(node, name, value) {\n this[_parent] = node;\n this[$nodeName] = name;\n this[$content] = value;\n this[$consumed] = false;\n this[$uid] = `attribute${uid++}`;\n }\n\n [$getParent]() {\n return this[_parent];\n }\n\n [$isDataValue]() {\n return true;\n }\n\n [$getDataValue]() {\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$text]() {\n return this[$content];\n }\n\n [$isDescendent](parent) {\n return this[_parent] === parent || this[_parent][$isDescendent](parent);\n }\n}\n\nclass XmlObject extends XFAObject {\n constructor(nsId, name, attributes = {}) {\n super(nsId, name);\n this[$content] = \"\";\n this[_dataValue] = null;\n if (name !== \"#text\") {\n const map = new Map();\n this[_attributes] = map;\n for (const [attrName, value] of Object.entries(attributes)) {\n map.set(attrName, new XFAAttribute(this, attrName, value));\n }\n if (attributes.hasOwnProperty($nsAttributes)) {\n // XFA attributes.\n const dataNode = attributes[$nsAttributes].xfa.dataNode;\n if (dataNode !== undefined) {\n if (dataNode === \"dataGroup\") {\n this[_dataValue] = false;\n } else if (dataNode === \"dataValue\") {\n this[_dataValue] = true;\n }\n }\n }\n }\n this[$consumed] = false;\n }\n\n [$toString](buf) {\n const tagName = this[$nodeName];\n if (tagName === \"#text\") {\n buf.push(encodeToXmlString(this[$content]));\n return;\n }\n const utf8TagName = utf8StringToString(tagName);\n const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n buf.push(`<${prefix}${utf8TagName}`);\n for (const [name, value] of this[_attributes].entries()) {\n const utf8Name = utf8StringToString(name);\n buf.push(` ${utf8Name}=\"${encodeToXmlString(value[$content])}\"`);\n }\n if (this[_dataValue] !== null) {\n if (this[_dataValue]) {\n buf.push(` xfa:dataNode=\"dataValue\"`);\n } else {\n buf.push(` xfa:dataNode=\"dataGroup\"`);\n }\n }\n if (!this[$content] && this[_children].length === 0) {\n buf.push(\"/>\");\n return;\n }\n\n buf.push(\">\");\n if (this[$content]) {\n if (typeof this[$content] === \"string\") {\n buf.push(encodeToXmlString(this[$content]));\n } else {\n this[$content][$toString](buf);\n }\n } else {\n for (const child of this[_children]) {\n child[$toString](buf);\n }\n }\n buf.push(`</${prefix}${utf8TagName}>`);\n }\n\n [$onChild](child) {\n if (this[$content]) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n this[$content] = \"\";\n }\n this[$appendChild](child);\n return true;\n }\n\n [$onText](str) {\n this[$content] += str;\n }\n\n [$finalize]() {\n if (this[$content] && this[_children].length > 0) {\n const node = new XmlObject(this[$namespaceId], \"#text\");\n this[$appendChild](node);\n node[$content] = this[$content];\n delete this[$content];\n }\n }\n\n [$toHTML]() {\n if (this[$nodeName] === \"#text\") {\n return HTMLResult.success({\n name: \"#text\",\n value: this[$content],\n });\n }\n\n return HTMLResult.EMPTY;\n }\n\n [$getChildren](name = null) {\n if (!name) {\n return this[_children];\n }\n\n return this[_children].filter(c => c[$nodeName] === name);\n }\n\n [$getAttributes]() {\n return this[_attributes];\n }\n\n [$getChildrenByClass](name) {\n const value = this[_attributes].get(name);\n if (value !== undefined) {\n return value;\n }\n return this[$getChildren](name);\n }\n\n *[$getChildrenByNameIt](name, allTransparent) {\n const value = this[_attributes].get(name);\n if (value) {\n yield value;\n }\n\n for (const child of this[_children]) {\n if (child[$nodeName] === name) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getChildrenByNameIt](name, allTransparent);\n }\n }\n }\n\n *[$getAttributeIt](name, skipConsumed) {\n const value = this[_attributes].get(name);\n if (value && (!skipConsumed || !value[$consumed])) {\n yield value;\n }\n for (const child of this[_children]) {\n yield* child[$getAttributeIt](name, skipConsumed);\n }\n }\n\n *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n for (const child of this[_children]) {\n if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n yield child;\n }\n\n if (allTransparent) {\n yield* child[$getRealChildrenByNameIt](\n name,\n allTransparent,\n skipConsumed\n );\n }\n }\n }\n\n [$isDataValue]() {\n if (this[_dataValue] === null) {\n return (\n this[_children].length === 0 ||\n this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\n );\n }\n return this[_dataValue];\n }\n\n [$getDataValue]() {\n if (this[_dataValue] === null) {\n if (this[_children].length === 0) {\n return this[$content].trim();\n }\n if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\n return this[_children][0][$text]().trim();\n }\n return null;\n }\n return this[$content].trim();\n }\n\n [$setValue](value) {\n value = value.value || \"\";\n this[$content] = value.toString();\n }\n\n [$dump](hasNS = false) {\n const dumped = Object.create(null);\n if (hasNS) {\n dumped.$ns = this[$namespaceId];\n }\n if (this[$content]) {\n dumped.$content = this[$content];\n }\n dumped.$name = this[$nodeName];\n\n dumped.children = [];\n for (const child of this[_children]) {\n dumped.children.push(child[$dump](hasNS));\n }\n\n dumped.attributes = Object.create(null);\n for (const [name, value] of this[_attributes]) {\n dumped.attributes[name] = value[$content];\n }\n\n return dumped;\n }\n}\n\nclass ContentObject extends XFAObject {\n constructor(nsId, name) {\n super(nsId, name);\n this[$content] = \"\";\n }\n\n [$onText](text) {\n this[$content] += text;\n }\n\n [$finalize]() {}\n}\n\nclass OptionObject extends ContentObject {\n constructor(nsId, name, options) {\n super(nsId, name);\n this[_options] = options;\n }\n\n [$finalize]() {\n this[$content] = getKeyword({\n data: this[$content],\n defaultValue: this[_options][0],\n validate: k => this[_options].includes(k),\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_options];\n }\n}\n\nclass StringObject extends ContentObject {\n [$finalize]() {\n this[$content] = this[$content].trim();\n }\n}\n\nclass IntegerObject extends ContentObject {\n constructor(nsId, name, defaultValue, validator) {\n super(nsId, name);\n this[_defaultValue] = defaultValue;\n this[_validator] = validator;\n }\n\n [$finalize]() {\n this[$content] = getInteger({\n data: this[$content],\n defaultValue: this[_defaultValue],\n validate: this[_validator],\n });\n }\n\n [$clean](builder) {\n super[$clean](builder);\n delete this[_defaultValue];\n delete this[_validator];\n }\n}\n\nclass Option01 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 0, n => n === 1);\n }\n}\n\nclass Option10 extends IntegerObject {\n constructor(nsId, name) {\n super(nsId, name, 1, n => n === 0);\n }\n}\n\nexport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $cleanup,\n $clone,\n $consumed,\n $content,\n $data,\n $dump,\n $extra,\n $finalize,\n $flushHTML,\n $getAttributeIt,\n $getAttributes,\n $getAvailableSpace,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getChildrenByNameIt,\n $getContainedChildren,\n $getDataValue,\n $getExtra,\n $getNextPage,\n $getParent,\n $getRealChildrenByNameIt,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $indexOf,\n $insertAt,\n $isBindable,\n $isCDATAXml,\n $isDataValue,\n $isDescendent,\n $isNsAgnostic,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $nsAttributes,\n $onChild,\n $onChildCheck,\n $onText,\n $popPara,\n $pushGlyphs,\n $pushPara,\n $removeChild,\n $resolvePrototypes,\n $root,\n $searchNode,\n $setId,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toString,\n $toStyle,\n $uid,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAAttribute,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow } from \"../../shared/util.js\";\n\nconst dimConverters = {\n pt: x => x,\n cm: x => (x / 2.54) * 72,\n mm: x => (x / (10 * 2.54)) * 72,\n in: x => x * 72,\n px: x => x,\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n if (str.startsWith(\"'\") || str.startsWith('\"')) {\n return str.slice(1, str.length - 1);\n }\n return str;\n}\n\nfunction getInteger({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseInt(data, 10);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getFloat({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n const n = parseFloat(data);\n if (!isNaN(n) && validate(n)) {\n return n;\n }\n return defaultValue;\n}\n\nfunction getKeyword({ data, defaultValue, validate }) {\n if (!data) {\n return defaultValue;\n }\n data = data.trim();\n if (validate(data)) {\n return data;\n }\n return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n return getKeyword({\n data,\n defaultValue: options[0],\n validate: k => options.includes(k),\n });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n def = def || \"0\";\n if (!str) {\n return getMeasurement(def);\n }\n const match = str.trim().match(measurementPattern);\n if (!match) {\n return getMeasurement(def);\n }\n const [, valueStr, unit] = match;\n const value = parseFloat(valueStr);\n if (isNaN(value)) {\n return getMeasurement(def);\n }\n\n if (value === 0) {\n return 0;\n }\n\n const conv = dimConverters[unit];\n if (conv) {\n return conv(value);\n }\n\n return value;\n}\n\nfunction getRatio(data) {\n if (!data) {\n return { num: 1, den: 1 };\n }\n const ratio = data\n .trim()\n .split(/\\s*:\\s*/)\n .map(x => parseFloat(x))\n .filter(x => !isNaN(x));\n if (ratio.length === 1) {\n ratio.push(1);\n }\n\n if (ratio.length === 0) {\n return { num: 1, den: 1 };\n }\n\n const [num, den] = ratio;\n return { num, den };\n}\n\nfunction getRelevant(data) {\n if (!data) {\n return [];\n }\n return data\n .trim()\n .split(/\\s+/)\n .map(e => {\n return {\n excluded: e[0] === \"-\",\n viewname: e.substring(1),\n };\n });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n let [r, g, b] = def;\n if (!data) {\n return { r, g, b };\n }\n const color = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\n .map(c => (isNaN(c) ? 0 : c));\n\n if (color.length < 3) {\n return { r, g, b };\n }\n\n [r, g, b] = color;\n return { r, g, b };\n}\n\nfunction getBBox(data) {\n const def = -1;\n if (!data) {\n return { x: def, y: def, width: def, height: def };\n }\n const bbox = data\n .trim()\n .split(/\\s*,\\s*/)\n .map(m => getMeasurement(m, \"-1\"));\n if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n return { x: def, y: def, width: def, height: def };\n }\n\n const [x, y, width, height] = bbox;\n return { x, y, width, height };\n}\n\nclass HTMLResult {\n static get FAILURE() {\n return shadow(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n }\n\n static get EMPTY() {\n return shadow(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n }\n\n constructor(success, html, bbox, breakNode) {\n this.success = success;\n this.html = html;\n this.bbox = bbox;\n this.breakNode = breakNode;\n }\n\n isBreak() {\n return !!this.breakNode;\n }\n\n static breakNode(node) {\n return new HTMLResult(false, null, null, node);\n }\n\n static success(html, bbox = null) {\n return new HTMLResult(true, html, bbox, null);\n }\n}\n\nexport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n stripQuotes,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst $buildXFAObject = Symbol();\n\nconst NamespaceIds = {\n config: {\n id: 0,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\"),\n },\n connectionSet: {\n id: 1,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\"),\n },\n datasets: {\n id: 2,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\"),\n },\n form: {\n id: 3,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\"),\n },\n localeSet: {\n id: 4,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\"),\n },\n pdf: {\n id: 5,\n check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\",\n },\n signature: {\n id: 6,\n check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\",\n },\n sourceSet: {\n id: 7,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\"),\n },\n stylesheet: {\n id: 8,\n check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\",\n },\n template: {\n id: 9,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\"),\n },\n xdc: {\n id: 10,\n check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\"),\n },\n xdp: {\n id: 11,\n check: ns => ns === \"http://ns.adobe.com/xdp/\",\n },\n xfdf: {\n id: 12,\n check: ns => ns === \"http://ns.adobe.com/xfdf/\",\n },\n xhtml: {\n id: 13,\n check: ns => ns === \"http://www.w3.org/1999/xhtml\",\n },\n xmpmeta: {\n id: 14,\n check: ns => ns === \"http://ns.adobe.com/xmpmeta/\",\n },\n};\n\nexport { $buildXFAObject, NamespaceIds };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $getChildren,\n $getChildrenByClass,\n $getChildrenByName,\n $getParent,\n $namespaceId,\n XFAObject,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n dot: 0,\n dotDot: 1,\n dotHash: 2,\n dotBracket: 3,\n dotParen: 4,\n};\n\nconst shortcuts = new Map([\n [\"$data\", (root, current) => (root.datasets ? root.datasets.data : root)],\n [\n \"$record\",\n (root, current) =>\n (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\n ],\n [\"$template\", (root, current) => root.template],\n [\"$connectionSet\", (root, current) => root.connectionSet],\n [\"$form\", (root, current) => root.form],\n [\"$layout\", (root, current) => root.layout],\n [\"$host\", (root, current) => root.host],\n [\"$dataWindow\", (root, current) => root.dataWindow],\n [\"$event\", (root, current) => root.event],\n [\"!\", (root, current) => root.datasets],\n [\"$xfa\", (root, current) => root],\n [\"xfa\", (root, current) => root],\n [\"$\", (root, current) => current],\n]);\n\nconst somCache = new WeakMap();\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n index = index.trim();\n if (index === \"*\") {\n return Infinity;\n }\n return parseInt(index, 10) || 0;\n}\n\n// For now expressions containing .[...] or .(...) are not\n// evaluated so don't parse them.\n// TODO: implement that stuff and the remove the noExpr param.\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n let match = expr.match(namePattern);\n if (!match) {\n return null;\n }\n\n let [name] = match;\n const parsed = [\n {\n name,\n cacheName: \".\" + name,\n index: 0,\n js: null,\n formCalc: null,\n operator: operators.dot,\n },\n ];\n\n let pos = name.length;\n\n while (pos < expr.length) {\n const spos = pos;\n const char = expr.charAt(pos++);\n if (char === \"[\") {\n match = expr.slice(pos).match(indexPattern);\n if (!match) {\n warn(\"XFA - Invalid index in SOM expression\");\n return null;\n }\n parsed.at(-1).index = parseIndex(match[0]);\n pos += match[0].length + 1;\n continue;\n }\n\n let operator;\n switch (expr.charAt(pos)) {\n case \".\":\n if (!dotDotAllowed) {\n return null;\n }\n pos++;\n operator = operators.dotDot;\n break;\n case \"#\":\n pos++;\n operator = operators.dotHash;\n break;\n case \"[\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO: FormCalc expression so need to use the parser\n operator = operators.dotBracket;\n break;\n case \"(\":\n if (noExpr) {\n warn(\n \"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\"\n );\n return null;\n }\n // TODO:\n // JavaScript expression: should be a boolean operation with a path\n // so maybe we can have our own parser for that stuff or\n // maybe use the formcalc one.\n operator = operators.dotParen;\n break;\n default:\n operator = operators.dot;\n break;\n }\n\n match = expr.slice(pos).match(namePattern);\n if (!match) {\n break;\n }\n\n [name] = match;\n pos += name.length;\n parsed.push({\n name,\n cacheName: expr.slice(spos, pos),\n operator,\n index: 0,\n js: null,\n formCalc: null,\n });\n }\n return parsed;\n}\n\nfunction searchNode(\n root,\n container,\n expr,\n dotDotAllowed = true,\n useCache = true\n) {\n const parsed = parseExpression(expr, dotDotAllowed);\n if (!parsed) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n let isQualified;\n if (fn) {\n isQualified = true;\n root = [fn(root, container)];\n i = 1;\n } else {\n isQualified = container === null;\n root = [container || root];\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, cacheName, operator, index } = parsed[i];\n const nodes = [];\n for (const node of root) {\n if (!(node instanceof XFAObject)) {\n continue;\n }\n\n let children, cached;\n\n if (useCache) {\n cached = somCache.get(node);\n if (!cached) {\n cached = new Map();\n somCache.set(node, cached);\n }\n children = cached.get(cacheName);\n }\n\n if (!children) {\n switch (operator) {\n case operators.dot:\n children = node[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = node[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = node[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n if (useCache) {\n cached.set(cacheName, children);\n }\n }\n\n if (children.length > 0) {\n nodes.push(children);\n }\n }\n\n if (nodes.length === 0 && !isQualified && i === 0) {\n // We've an unqualified expression and we didn't find anything\n // so look at container and siblings of container and so on.\n // http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\n const parent = container[$getParent]();\n container = parent;\n if (!container) {\n return null;\n }\n i = -1;\n root = [container];\n continue;\n }\n\n if (isFinite(index)) {\n root = nodes.filter(node => index < node.length).map(node => node[index]);\n } else {\n root = nodes.flat();\n }\n }\n\n if (root.length === 0) {\n return null;\n }\n\n return root;\n}\n\nfunction createNodes(root, path) {\n let node = null;\n for (const { name, index } of path) {\n for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n const nsId = root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\n node = new XmlObject(nsId, name);\n root[$appendChild](node);\n }\n\n root = node;\n }\n return node;\n}\n\nfunction createDataNode(root, container, expr) {\n const parsed = parseExpression(expr);\n if (!parsed) {\n return null;\n }\n\n if (parsed.some(x => x.operator === operators.dotDot)) {\n return null;\n }\n\n const fn = shortcuts.get(parsed[0].name);\n let i = 0;\n if (fn) {\n root = fn(root, container);\n i = 1;\n } else {\n root = container || root;\n }\n\n for (let ii = parsed.length; i < ii; i++) {\n const { name, operator, index } = parsed[i];\n if (!isFinite(index)) {\n parsed[i].index = 0;\n return createNodes(root, parsed.slice(i));\n }\n\n let children;\n switch (operator) {\n case operators.dot:\n children = root[$getChildrenByName](name, false);\n break;\n case operators.dotDot:\n children = root[$getChildrenByName](name, true);\n break;\n case operators.dotHash:\n children = root[$getChildrenByClass](name);\n if (children instanceof XFAObjectArray) {\n children = children.children;\n } else {\n children = [children];\n }\n break;\n default:\n break;\n }\n\n if (children.length === 0) {\n return createNodes(root, parsed.slice(i));\n }\n\n if (index < children.length) {\n const child = children[index];\n if (!(child instanceof XFAObject)) {\n warn(`XFA - Cannot create a node.`);\n return null;\n }\n root = child;\n } else {\n parsed[i].index = index - children.length;\n return createNodes(root, parsed.slice(i));\n }\n }\n return null;\n}\n\nexport { createDataNode, searchNode };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $clone,\n $consumed,\n $content,\n $data,\n $finalize,\n $getAttributeIt,\n $getChildren,\n $getDataValue,\n $getParent,\n $getRealChildrenByNameIt,\n $hasSettableValue,\n $indexOf,\n $insertAt,\n $isBindable,\n $isDataValue,\n $isDescendent,\n $namespaceId,\n $nodeName,\n $removeChild,\n $setValue,\n $text,\n XFAAttribute,\n XFAObjectArray,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { BindItems, Field, Items, SetProperty, Text } from \"./template.js\";\nimport { createDataNode, searchNode } from \"./som.js\";\nimport { NamespaceIds } from \"./namespaces.js\";\nimport { warn } from \"../../shared/util.js\";\n\nconst NS_DATASETS = NamespaceIds.datasets.id;\n\nfunction createText(content) {\n const node = new Text({});\n node[$content] = content;\n return node;\n}\n\nclass Binder {\n constructor(root) {\n this.root = root;\n this.datasets = root.datasets;\n if (root.datasets && root.datasets.data) {\n this.data = root.datasets.data;\n } else {\n this.data = new XmlObject(NamespaceIds.datasets.id, \"data\");\n }\n this.emptyMerge = this.data[$getChildren]().length === 0;\n\n this.root.form = this.form = root.template[$clone]();\n }\n\n _isConsumeData() {\n return !this.emptyMerge && this._mergeMode;\n }\n\n _isMatchTemplate() {\n return !this._isConsumeData();\n }\n\n bind() {\n this._bindElement(this.form, this.data);\n return this.form;\n }\n\n getData() {\n return this.data;\n }\n\n _bindValue(formNode, data, picture) {\n // Nodes must have the same \"type\": container or value.\n // Here we make the link between form node and\n // data node (through $data property): we'll use it\n // to save form data.\n\n formNode[$data] = data;\n if (formNode[$hasSettableValue]()) {\n if (data[$isDataValue]()) {\n const value = data[$getDataValue]();\n // TODO: use picture.\n formNode[$setValue](createText(value));\n } else if (\n formNode instanceof Field &&\n formNode.ui &&\n formNode.ui.choiceList &&\n formNode.ui.choiceList.open === \"multiSelect\"\n ) {\n const value = data[$getChildren]()\n .map(child => child[$content].trim())\n .join(\"\\n\");\n formNode[$setValue](createText(value));\n } else if (this._isConsumeData()) {\n warn(`XFA - Nodes haven't the same type.`);\n }\n } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\n this._bindElement(formNode, data);\n } else {\n warn(`XFA - Nodes haven't the same type.`);\n }\n }\n\n _findDataByNameToConsume(name, isValue, dataNode, global) {\n if (!name) {\n return null;\n }\n\n // Firstly, we try to find a node with the given name:\n // - in dataNode;\n // - if not found, then in parent;\n // - and if not in found, then in grand-parent.\n let generator, match;\n for (let i = 0; i < 3; i++) {\n generator = dataNode[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ false,\n /* skipConsumed = */ true\n );\n // Try to find a match of the same kind.\n while (true) {\n match = generator.next().value;\n if (!match) {\n break;\n }\n\n if (isValue === match[$isDataValue]()) {\n return match;\n }\n }\n if (\n dataNode[$namespaceId] === NamespaceIds.datasets.id &&\n dataNode[$nodeName] === \"data\"\n ) {\n break;\n }\n dataNode = dataNode[$getParent]();\n }\n\n if (!global) {\n return null;\n }\n\n // Secondly, if global try to find it just under the root of datasets\n // (which is the location of global variables).\n generator = this.data[$getRealChildrenByNameIt](\n name,\n /* allTransparent = */ true,\n /* skipConsumed = */ false\n );\n\n match = generator.next().value;\n if (match) {\n return match;\n }\n\n // Thirdly, try to find it in attributes.\n generator = this.data[$getAttributeIt](name, /* skipConsumed = */ true);\n match = generator.next().value;\n if (match && match[$isDataValue]()) {\n return match;\n }\n\n return null;\n }\n\n _setProperties(formNode, dataNode) {\n // For example:\n // <field name=\"LastName\" ...>\n // <setProperty ref=\"$data.Main.Style.NameFont\" target=\"font.typeface\"/>\n // <setProperty ref=\"$data.Main.Style.NameSize\" target=\"font.size\"/>\n // <setProperty ref=\"$data.Main.Help.LastName\" target=\"assist.toolTip\"/>\n // </field>\n\n if (!formNode.hasOwnProperty(\"setProperty\")) {\n return;\n }\n\n for (const { ref, target, connection } of formNode.setProperty.children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n const [node] = nodes;\n\n if (!node[$isDescendent](this.data)) {\n warn(`XFA - Invalid node: must be a data node.`);\n continue;\n }\n\n const targetNodes = searchNode(\n this.root,\n formNode,\n target,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!targetNodes) {\n warn(`XFA - Invalid target: ${target}.`);\n continue;\n }\n const [targetNode] = targetNodes;\n\n if (!targetNode[$isDescendent](formNode)) {\n warn(`XFA - Invalid target: must be a property or subproperty.`);\n continue;\n }\n\n const targetParent = targetNode[$getParent]();\n if (\n targetNode instanceof SetProperty ||\n targetParent instanceof SetProperty\n ) {\n warn(\n `XFA - Invalid target: cannot be a setProperty or one of its properties.`\n );\n continue;\n }\n\n if (\n targetNode instanceof BindItems ||\n targetParent instanceof BindItems\n ) {\n warn(\n `XFA - Invalid target: cannot be a bindItems or one of its properties.`\n );\n continue;\n }\n\n const content = node[$text]();\n const name = targetNode[$nodeName];\n\n if (targetNode instanceof XFAAttribute) {\n const attrs = Object.create(null);\n attrs[name] = content;\n const obj = Reflect.construct(\n Object.getPrototypeOf(targetParent).constructor,\n [attrs]\n );\n targetParent[name] = obj[name];\n continue;\n }\n\n if (!targetNode.hasOwnProperty($content)) {\n warn(`XFA - Invalid node to use in setProperty`);\n continue;\n }\n\n targetNode[$data] = node;\n targetNode[$content] = content;\n targetNode[$finalize]();\n }\n }\n\n _bindItems(formNode, dataNode) {\n // For example:\n // <field name=\"CardName\"...>\n // <bindItems ref=\"$data.main.ccs.cc[*]\" labelRef=\"uiname\"\n // valueRef=\"token\"/>\n // <ui><choiceList/></ui>\n // </field>\n\n if (\n !formNode.hasOwnProperty(\"items\") ||\n !formNode.hasOwnProperty(\"bindItems\") ||\n formNode.bindItems.isEmpty()\n ) {\n return;\n }\n\n for (const item of formNode.items.children) {\n formNode[$removeChild](item);\n }\n\n formNode.items.clear();\n\n const labels = new Items({});\n const values = new Items({});\n\n formNode[$appendChild](labels);\n formNode.items.push(labels);\n\n formNode[$appendChild](values);\n formNode.items.push(values);\n\n for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\n .children) {\n if (connection) {\n // TODO: evaluate if we should implement this feature.\n // Skip for security reasons.\n continue;\n }\n if (!ref) {\n continue;\n }\n\n const nodes = searchNode(\n this.root,\n dataNode,\n ref,\n false /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!nodes) {\n warn(`XFA - Invalid reference: ${ref}.`);\n continue;\n }\n for (const node of nodes) {\n if (!node[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n continue;\n }\n\n const labelNodes = searchNode(\n this.root,\n node,\n labelRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!labelNodes) {\n warn(`XFA - Invalid label: ${labelRef}.`);\n continue;\n }\n const [labelNode] = labelNodes;\n\n if (!labelNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid label: must be a datasets child.`);\n continue;\n }\n\n const valueNodes = searchNode(\n this.root,\n node,\n valueRef,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (!valueNodes) {\n warn(`XFA - Invalid value: ${valueRef}.`);\n continue;\n }\n const [valueNode] = valueNodes;\n\n if (!valueNode[$isDescendent](this.datasets)) {\n warn(`XFA - Invalid value: must be a datasets child.`);\n continue;\n }\n\n const label = createText(labelNode[$text]());\n const value = createText(valueNode[$text]());\n\n labels[$appendChild](label);\n labels.text.push(label);\n\n values[$appendChild](value);\n values.text.push(value);\n }\n }\n }\n\n _bindOccurrences(formNode, matches, picture) {\n // Insert nodes which are not in the template but reflect\n // what we've in data tree.\n\n let baseClone;\n if (matches.length > 1) {\n // Clone before binding to avoid bad state.\n baseClone = formNode[$clone]();\n baseClone[$removeChild](baseClone.occur);\n baseClone.occur = null;\n }\n\n this._bindValue(formNode, matches[0], picture);\n this._setProperties(formNode, matches[0]);\n this._bindItems(formNode, matches[0]);\n\n if (matches.length === 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n const pos = parent[$indexOf](formNode);\n\n for (let i = 1, ii = matches.length; i < ii; i++) {\n const match = matches[i];\n const clone = baseClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n\n this._bindValue(clone, match, picture);\n this._setProperties(clone, match);\n this._bindItems(clone, match);\n }\n }\n\n _createOccurrences(formNode) {\n if (!this.emptyMerge) {\n return;\n }\n\n const { occur } = formNode;\n if (!occur || occur.initial <= 1) {\n return;\n }\n\n const parent = formNode[$getParent]();\n const name = formNode[$nodeName];\n\n if (!(parent[name] instanceof XFAObjectArray)) {\n return;\n }\n\n let currentNumber;\n if (formNode.name) {\n currentNumber = parent[name].children.filter(\n e => e.name === formNode.name\n ).length;\n } else {\n currentNumber = parent[name].children.length;\n }\n\n const pos = parent[$indexOf](formNode) + 1;\n const ii = occur.initial - currentNumber;\n if (ii) {\n const nodeClone = formNode[$clone]();\n nodeClone[$removeChild](nodeClone.occur);\n nodeClone.occur = null;\n parent[name].push(nodeClone);\n parent[$insertAt](pos, nodeClone);\n\n for (let i = 1; i < ii; i++) {\n const clone = nodeClone[$clone]();\n parent[name].push(clone);\n parent[$insertAt](pos + i, clone);\n }\n }\n }\n\n _getOccurInfo(formNode) {\n const { name, occur } = formNode;\n if (!occur || !name) {\n return [1, 1];\n }\n const max = occur.max === -1 ? Infinity : occur.max;\n return [occur.min, max];\n }\n\n _setAndBind(formNode, dataNode) {\n this._setProperties(formNode, dataNode);\n this._bindItems(formNode, dataNode);\n this._bindElement(formNode, dataNode);\n }\n\n _bindElement(formNode, dataNode) {\n // Some nodes can be useless because min=0 so remove them\n // after the loop to avoid bad things.\n\n const uselessNodes = [];\n\n this._createOccurrences(formNode);\n\n for (const child of formNode[$getChildren]()) {\n if (child[$data]) {\n // Already bound.\n continue;\n }\n\n if (this._mergeMode === undefined && child[$nodeName] === \"subform\") {\n this._mergeMode = child.mergeMode === \"consumeData\";\n\n // XFA specs p. 182:\n // The highest-level subform and the data node representing\n // the current record are special; they are always\n // bound even if their names don't match.\n const dataChildren = dataNode[$getChildren]();\n if (dataChildren.length > 0) {\n this._bindOccurrences(child, [dataChildren[0]], null);\n } else if (this.emptyMerge) {\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n const dataChild = (child[$data] = new XmlObject(\n nsId,\n child.name || \"root\"\n ));\n dataNode[$appendChild](dataChild);\n this._bindElement(child, dataChild);\n }\n continue;\n }\n\n if (!child[$isBindable]()) {\n // The node cannot contain some new data so there is nothing\n // to create in the data node.\n continue;\n }\n\n let global = false;\n let picture = null;\n let ref = null;\n let match = null;\n if (child.bind) {\n switch (child.bind.match) {\n case \"none\":\n this._setAndBind(child, dataNode);\n continue;\n case \"global\":\n global = true;\n break;\n case \"dataRef\":\n if (!child.bind.ref) {\n warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\n this._setAndBind(child, dataNode);\n continue;\n }\n ref = child.bind.ref;\n break;\n default:\n break;\n }\n if (child.bind.picture) {\n picture = child.bind.picture[$content];\n }\n }\n\n const [min, max] = this._getOccurInfo(child);\n\n if (ref) {\n // Don't use a cache for searching: nodes can change during binding.\n match = searchNode(\n this.root,\n dataNode,\n ref,\n true /* = dotDotAllowed */,\n false /* = useCache */\n );\n if (match === null) {\n // Nothing found: we must create some nodes in data in order\n // to have something to match with the given expression.\n // See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\n match = createDataNode(this.data, dataNode, ref);\n if (!match) {\n // For example if the node contains a .(...) then it isn't\n // findable.\n // TODO: remove this when .(...) is implemented.\n continue;\n }\n if (this._isConsumeData()) {\n match[$consumed] = true;\n }\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n } else {\n if (this._isConsumeData()) {\n // Filter out consumed nodes.\n match = match.filter(node => !node[$consumed]);\n }\n if (match.length > max) {\n match = match.slice(0, max);\n } else if (match.length === 0) {\n match = null;\n }\n if (match && this._isConsumeData()) {\n match.forEach(node => {\n node[$consumed] = true;\n });\n }\n }\n } else {\n if (!child.name) {\n this._setAndBind(child, dataNode);\n continue;\n }\n if (this._isConsumeData()) {\n // In consumeData mode, search for the next node with the given name.\n // occurs.max gives us the max number of node to match.\n const matches = [];\n while (matches.length < max) {\n const found = this._findDataByNameToConsume(\n child.name,\n child[$hasSettableValue](),\n dataNode,\n global\n );\n\n if (!found) {\n break;\n }\n found[$consumed] = true;\n matches.push(found);\n }\n match = matches.length > 0 ? matches : null;\n } else {\n // If we've an empty merge, there are no reason\n // to make multiple bind so skip consumed nodes.\n match = dataNode[$getRealChildrenByNameIt](\n child.name,\n /* allTransparent = */ false,\n /* skipConsumed = */ this.emptyMerge\n ).next().value;\n if (!match) {\n // If there is no match (no data) and `min === 0` then\n // the container is entirely excluded.\n // https://www.pdfa.org/norm-refs/XFA-3_3.pdf#G12.1428332\n if (min === 0) {\n uselessNodes.push(child);\n continue;\n }\n // We're in matchTemplate mode so create a node in data to reflect\n // what we've in template.\n const nsId =\n dataNode[$namespaceId] === NS_DATASETS\n ? -1\n : dataNode[$namespaceId];\n match = child[$data] = new XmlObject(nsId, child.name);\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n dataNode[$appendChild](match);\n\n // Don't bind the value in newly created node because it's empty.\n this._setAndBind(child, match);\n continue;\n }\n if (this.emptyMerge) {\n match[$consumed] = true;\n }\n match = [match];\n }\n }\n\n if (match) {\n this._bindOccurrences(child, match, picture);\n } else if (min > 0) {\n this._setAndBind(child, dataNode);\n } else {\n uselessNodes.push(child);\n }\n }\n\n uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\n }\n}\n\nexport { Binder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $addHTML,\n $appendChild,\n $childrenToHTML,\n $clean,\n $cleanPage,\n $content,\n $data,\n $extra,\n $finalize,\n $flushHTML,\n $getAvailableSpace,\n $getChildren,\n $getContainedChildren,\n $getExtra,\n $getNextPage,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $hasSettableValue,\n $ids,\n $isBindable,\n $isCDATAXml,\n $isSplittable,\n $isThereMoreWidth,\n $isTransparent,\n $isUsable,\n $namespaceId,\n $nodeName,\n $onChild,\n $onText,\n $popPara,\n $pushPara,\n $removeChild,\n $searchNode,\n $setSetAttributes,\n $setValue,\n $tabIndex,\n $text,\n $toHTML,\n $toPages,\n $toStyle,\n $uid,\n ContentObject,\n Option01,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n addHTML,\n checkDimensions,\n flushHTML,\n getAvailableSpace,\n} from \"./layout.js\";\nimport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n} from \"./html_utils.js\";\nimport {\n getBBox,\n getColor,\n getFloat,\n getInteger,\n getKeyword,\n getMeasurement,\n getRatio,\n getRelevant,\n getStringOption,\n HTMLResult,\n} from \"./utils.js\";\nimport { stringToBytes, Util, warn } from \"../../shared/util.js\";\nimport { getMetrics } from \"./fonts.js\";\nimport { recoverJsURL } from \"../core_utils.js\";\nimport { searchNode } from \"./som.js\";\n\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n// In case of lr-tb (and rl-tb) layouts, we try:\n// - to put the container at the end of a line\n// - and if it fails we try on the next line.\n// If both tries failed then it's up to the parent\n// to handle the situation.\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\n\n// It's possible to have a bug in the layout and so as\n// a consequence we could loop for ever in Template::toHTML()\n// so in order to avoid that (and avoid a OOM crash) we break\n// the loop after having MAX_EMPTY_PAGES empty pages.\nconst MAX_EMPTY_PAGES = 3;\n\n// Default value to start with for the tabIndex property.\nconst DEFAULT_TAB_INDEX = 5000;\n\nconst HEADING_PATTERN = /^H(\\d+)$/;\n\n// Allowed mime types for images\nconst MIMES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/jpg\",\n \"image/pjpeg\",\n \"image/png\",\n \"image/apng\",\n \"image/x-png\",\n \"image/bmp\",\n \"image/x-ms-bmp\",\n \"image/tiff\",\n \"image/tif\",\n \"application/octet-stream\",\n]);\n\nconst IMAGES_HEADERS = [\n [[0x42, 0x4d], \"image/bmp\"],\n [[0xff, 0xd8, 0xff], \"image/jpeg\"],\n [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"],\n [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"],\n [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"],\n [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"],\n];\n\nfunction getBorderDims(node) {\n if (!node || !node.border) {\n return { w: 0, h: 0 };\n }\n\n const borderExtra = node.border[$getExtra]();\n if (!borderExtra) {\n return { w: 0, h: 0 };\n }\n\n return {\n w:\n borderExtra.widths[0] +\n borderExtra.widths[2] +\n borderExtra.insets[0] +\n borderExtra.insets[2],\n h:\n borderExtra.widths[1] +\n borderExtra.widths[3] +\n borderExtra.insets[1] +\n borderExtra.insets[3],\n };\n}\n\nfunction hasMargin(node) {\n return (\n node.margin &&\n (node.margin.topInset ||\n node.margin.rightInset ||\n node.margin.bottomInset ||\n node.margin.leftInset)\n );\n}\n\nfunction _setValue(templateNode, value) {\n if (!templateNode.value) {\n const nodeValue = new Value({});\n templateNode[$appendChild](nodeValue);\n templateNode.value = nodeValue;\n }\n templateNode.value[$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n for (const child of node[$getChildren]()) {\n if (child instanceof SubformSet) {\n yield* child[$getContainedChildren]();\n continue;\n }\n yield child;\n }\n}\n\nfunction isRequired(node) {\n return node.validate && node.validate.nullTest === \"error\";\n}\n\nfunction setTabIndex(node) {\n while (node) {\n if (!node.traversal) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n if (node[$tabIndex]) {\n return;\n }\n\n let next = null;\n for (const child of node.traversal[$getChildren]()) {\n if (child.operation === \"next\") {\n next = child;\n break;\n }\n }\n\n if (!next || !next.ref) {\n node[$tabIndex] = node[$getParent]()[$tabIndex];\n return;\n }\n\n const root = node[$getTemplateRoot]();\n node[$tabIndex] = ++root[$tabIndex];\n\n const ref = root[$searchNode](next.ref, node);\n if (!ref) {\n return;\n }\n\n node = ref[0];\n }\n}\n\nfunction applyAssist(obj, attributes) {\n const assist = obj.assist;\n if (assist) {\n const assistTitle = assist[$toHTML]();\n if (assistTitle) {\n attributes.title = assistTitle;\n }\n const role = assist.role;\n const match = role.match(HEADING_PATTERN);\n if (match) {\n const ariaRole = \"heading\";\n const ariaLevel = match[1];\n attributes.role = ariaRole;\n attributes[\"aria-level\"] = ariaLevel;\n }\n }\n // XXX: We could end up in a situation where the obj has a heading role and\n // is also a table. For now prioritize the table role.\n if (obj.layout === \"table\") {\n attributes.role = \"table\";\n } else if (obj.layout === \"row\") {\n attributes.role = \"row\";\n } else {\n const parent = obj[$getParent]();\n if (parent.layout === \"row\") {\n if (parent.assist && parent.assist.role === \"TH\") {\n attributes.role = \"columnheader\";\n } else {\n attributes.role = \"cell\";\n }\n }\n }\n}\n\nfunction ariaLabel(obj) {\n if (!obj.assist) {\n return null;\n }\n const assist = obj.assist;\n if (assist.speak && assist.speak[$content] !== \"\") {\n return assist.speak[$content];\n }\n if (assist.toolTip) {\n return assist.toolTip[$content];\n }\n // TODO: support finding the related caption element. See xfa_bug1718037.pdf\n // for an example.\n return null;\n}\n\nfunction valueToHtml(value) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: Object.create(null),\n },\n children: [\n {\n name: \"span\",\n attributes: {\n style: Object.create(null),\n },\n value,\n },\n ],\n });\n}\n\nfunction setFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === null) {\n root[$extra].firstUnsplittable = node;\n root[$extra].noLayoutFailure = true;\n }\n}\n\nfunction unsetFirstUnsplittable(node) {\n const root = node[$getTemplateRoot]();\n if (root[$extra].firstUnsplittable === node) {\n root[$extra].noLayoutFailure = false;\n }\n}\n\nfunction handleBreak(node) {\n if (node[$extra]) {\n return false;\n }\n\n node[$extra] = Object.create(null);\n\n if (node.targetType === \"auto\") {\n return false;\n }\n\n const root = node[$getTemplateRoot]();\n let target = null;\n if (node.target) {\n target = root[$searchNode](node.target, node[$getParent]());\n if (!target) {\n return false;\n }\n target = target[0];\n }\n\n const { currentPageArea, currentContentArea } = root[$extra];\n\n if (node.targetType === \"pageArea\") {\n if (!(target instanceof PageArea)) {\n target = null;\n }\n\n if (node.startNew) {\n node[$extra].target = target || currentPageArea;\n return true;\n } else if (target && target !== currentPageArea) {\n node[$extra].target = target;\n return true;\n }\n\n return false;\n }\n\n if (!(target instanceof ContentArea)) {\n target = null;\n }\n\n const pageArea = target && target[$getParent]();\n\n let index;\n let nextPageArea = pageArea;\n if (node.startNew) {\n // startNew === 1 so we must create a new container (pageArea or\n // contentArea).\n if (target) {\n const contentAreas = pageArea.contentArea.children;\n const indexForCurrent = contentAreas.indexOf(currentContentArea);\n const indexForTarget = contentAreas.indexOf(target);\n if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n // The next container is after the current container so\n // we can stay on the same page.\n nextPageArea = null;\n }\n index = indexForTarget - 1;\n } else {\n index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n }\n } else if (target && target !== currentContentArea) {\n const contentAreas = pageArea.contentArea.children;\n index = contentAreas.indexOf(target) - 1;\n nextPageArea = pageArea === currentPageArea ? null : pageArea;\n } else {\n return false;\n }\n\n node[$extra].target = nextPageArea;\n node[$extra].index = index;\n return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n const root = node[$getTemplateRoot]();\n const saved = root[$extra].noLayoutFailure;\n const savedMethod = extraNode[$getSubformParent];\n\n // Replace $getSubformParent to emulate that extraNode is just\n // under node.\n extraNode[$getSubformParent] = () => node;\n\n root[$extra].noLayoutFailure = true;\n const res = extraNode[$toHTML](space);\n node[$addHTML](res.html, res.bbox);\n root[$extra].noLayoutFailure = saved;\n extraNode[$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"appearanceFilter\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Arc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"arc\", /* hasChildren = */ true);\n this.circular = getInteger({\n data: attributes.circular,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.startAngle = getFloat({\n data: attributes.startAngle,\n defaultValue: 0,\n validate: x => true,\n });\n this.sweepAngle = getFloat({\n data: attributes.sweepAngle,\n defaultValue: 360,\n validate: x => true,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge || new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n let arc;\n const attributes = {\n xmlns: SVG_NS,\n style: {\n width: \"100%\",\n height: \"100%\",\n overflow: \"visible\",\n },\n };\n\n if (this.sweepAngle === 360) {\n arc = {\n name: \"ellipse\",\n attributes: {\n xmlns: SVG_NS,\n cx: \"50%\",\n cy: \"50%\",\n rx: \"50%\",\n ry: \"50%\",\n style,\n },\n };\n } else {\n const startAngle = (this.startAngle * Math.PI) / 180;\n const sweepAngle = (this.sweepAngle * Math.PI) / 180;\n const largeArc = this.sweepAngle > 180 ? 1 : 0;\n const [x1, y1, x2, y2] = [\n 50 * (1 + Math.cos(startAngle)),\n 50 * (1 - Math.sin(startAngle)),\n 50 * (1 + Math.cos(startAngle + sweepAngle)),\n 50 * (1 - Math.sin(startAngle + sweepAngle)),\n ];\n\n arc = {\n name: \"path\",\n attributes: {\n xmlns: SVG_NS,\n d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n vectorEffect: \"non-scaling-stroke\",\n style,\n },\n };\n\n Object.assign(attributes, {\n viewBox: \"0 0 100 100\",\n preserveAspectRatio: \"none\",\n });\n }\n\n const svg = {\n name: \"svg\",\n children: [arc],\n attributes,\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"area\", /* hasChildren = */ true);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n this.area = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$isTransparent]() {\n return true;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$addHTML](html, bbox) {\n const [x, y, w, h] = bbox;\n this[$extra].width = Math.max(this[$extra].width, x + w);\n this[$extra].height = Math.max(this[$extra].height, y + h);\n\n this[$extra].children.push(html);\n }\n\n [$getAvailableSpace]() {\n return this[$extra].availableSpace;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"position\");\n const attributes = {\n style,\n id: this[$uid],\n class: [\"xfaArea\"],\n };\n\n if (isPrintOnly(this)) {\n attributes.class.push(\"xfaPrintOnly\");\n }\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n this[$extra] = {\n children,\n width: 0,\n height: 0,\n availableSpace,\n };\n\n const result = this[$childrenToHTML]({\n filter: new Set([\n \"area\",\n \"draw\",\n \"field\",\n \"exclGroup\",\n \"subform\",\n \"subformSet\",\n ]),\n include: true,\n });\n\n if (!result.success) {\n if (result.isBreak()) {\n return result;\n }\n // Nothing to propose for the element which doesn't fit the\n // available space.\n delete this[$extra];\n return HTMLResult.FAILURE;\n }\n\n style.width = measureToString(this[$extra].width);\n style.height = measureToString(this[$extra].height);\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\n delete this[$extra];\n\n return HTMLResult.success(html, bbox);\n }\n}\n\nclass Assist extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"assist\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.role = attributes.role || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.speak = null;\n this.toolTip = null;\n }\n\n [$toHTML]() {\n return this.toolTip && this.toolTip[$content]\n ? this.toolTip[$content]\n : null;\n }\n}\n\nclass Barcode extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"barcode\", /* hasChildren = */ true);\n this.charEncoding = getKeyword({\n data: attributes.charEncoding\n ? attributes.charEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.checksum = getStringOption(attributes.checksum, [\n \"none\",\n \"1mod10\",\n \"1mod10_1mod11\",\n \"2mod10\",\n \"auto\",\n ]);\n this.dataColumnCount = getInteger({\n data: attributes.dataColumnCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataLength = getInteger({\n data: attributes.dataLength,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.dataPrep = getStringOption(attributes.dataPrep, [\n \"none\",\n \"flateCompress\",\n ]);\n this.dataRowCount = getInteger({\n data: attributes.dataRowCount,\n defaultValue: -1,\n validate: x => x >= 0,\n });\n this.endChar = attributes.endChar || \"\";\n this.errorCorrectionLevel = getInteger({\n data: attributes.errorCorrectionLevel,\n defaultValue: -1,\n validate: x => x >= 0 && x <= 8,\n });\n this.id = attributes.id || \"\";\n this.moduleHeight = getMeasurement(attributes.moduleHeight, \"5mm\");\n this.moduleWidth = getMeasurement(attributes.moduleWidth, \"0.25mm\");\n this.printCheckDigit = getInteger({\n data: attributes.printCheckDigit,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\n this.startChar = attributes.startChar || \"\";\n this.textLocation = getStringOption(attributes.textLocation, [\n \"below\",\n \"above\",\n \"aboveEmbedded\",\n \"belowEmbedded\",\n \"none\",\n ]);\n this.truncate = getInteger({\n data: attributes.truncate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.type = getStringOption(\n attributes.type ? attributes.type.toLowerCase() : \"\",\n [\n \"aztec\",\n \"codabar\",\n \"code2of5industrial\",\n \"code2of5interleaved\",\n \"code2of5matrix\",\n \"code2of5standard\",\n \"code3of9\",\n \"code3of9extended\",\n \"code11\",\n \"code49\",\n \"code93\",\n \"code128\",\n \"code128a\",\n \"code128b\",\n \"code128c\",\n \"code128sscc\",\n \"datamatrix\",\n \"ean8\",\n \"ean8add2\",\n \"ean8add5\",\n \"ean13\",\n \"ean13add2\",\n \"ean13add5\",\n \"ean13pwcd\",\n \"fim\",\n \"logmars\",\n \"maxicode\",\n \"msi\",\n \"pdf417\",\n \"pdf417macro\",\n \"plessey\",\n \"postauscust2\",\n \"postauscust3\",\n \"postausreplypaid\",\n \"postausstandard\",\n \"postukrm4scc\",\n \"postusdpbc\",\n \"postusimb\",\n \"postusstandard\",\n \"postus5zip\",\n \"qrcode\",\n \"rfid\",\n \"rss14\",\n \"rss14expanded\",\n \"rss14limited\",\n \"rss14stacked\",\n \"rss14stackedomni\",\n \"rss14truncated\",\n \"telepen\",\n \"ucc128\",\n \"ucc128random\",\n \"ucc128sscc\",\n \"upca\",\n \"upcaadd2\",\n \"upcaadd5\",\n \"upcapwcd\",\n \"upce\",\n \"upceadd2\",\n \"upceadd5\",\n \"upcean2\",\n \"upcean5\",\n \"upsmaxicode\",\n ]\n );\n this.upsMode = getStringOption(attributes.upsMode, [\n \"usCarrier\",\n \"internationalCarrier\",\n \"secureSymbol\",\n \"standardSymbol\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\n this.encrypt = null;\n this.extras = null;\n }\n}\n\nclass Bind extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bind\", /* hasChildren = */ true);\n this.match = getStringOption(attributes.match, [\n \"once\",\n \"dataRef\",\n \"global\",\n \"none\",\n ]);\n this.ref = attributes.ref || \"\";\n this.picture = null;\n }\n}\n\nclass BindItems extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bindItems\");\n this.connection = attributes.connection || \"\";\n this.labelRef = attributes.labelRef || \"\";\n this.ref = attributes.ref || \"\";\n this.valueRef = attributes.valueRef || \"\";\n }\n}\n\nclass Bookend extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"bookend\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass BooleanElement extends Option01 {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"boolean\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] === 1 ? \"1\" : \"0\");\n }\n}\n\nclass Border extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"border\", /* hasChildren = */ true);\n this.break = getStringOption(attributes.break, [\"close\", \"open\"]);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.extras = null;\n this.fill = null;\n this.margin = null;\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const edges = this.edge.children.slice();\n if (edges.length < 4) {\n const defaultEdge = edges.at(-1) || new Edge({});\n for (let i = edges.length; i < 4; i++) {\n edges.push(defaultEdge);\n }\n }\n\n const widths = edges.map(edge => edge.thickness);\n const insets = [0, 0, 0, 0];\n if (this.margin) {\n insets[0] = this.margin.topInset;\n insets[1] = this.margin.rightInset;\n insets[2] = this.margin.bottomInset;\n insets[3] = this.margin.leftInset;\n }\n this[$extra] = { widths, insets, edges };\n }\n return this[$extra];\n }\n\n [$toStyle]() {\n // TODO: incomplete (hand).\n const { edges } = this[$getExtra]();\n const edgeStyles = edges.map(node => {\n const style = node[$toStyle]();\n style.color = style.color || \"#000000\";\n return style;\n });\n\n const style = Object.create(null);\n if (this.margin) {\n Object.assign(style, this.margin[$toStyle]());\n }\n\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n }\n\n if (this.corner.children.some(node => node.radius !== 0)) {\n const cornerStyles = this.corner.children.map(node => node[$toStyle]());\n if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n const last = cornerStyles.at(-1);\n for (let i = cornerStyles.length; i < 4; i++) {\n cornerStyles.push(last);\n }\n }\n\n style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n }\n\n switch (this.presence) {\n case \"invisible\":\n case \"hidden\":\n style.borderStyle = \"\";\n break;\n case \"inactive\":\n style.borderStyle = \"none\";\n break;\n default:\n style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n break;\n }\n\n style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n\n return style;\n }\n}\n\nclass Break extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"break\", /* hasChildren = */ true);\n this.after = getStringOption(attributes.after, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.afterTarget = attributes.afterTarget || \"\";\n this.before = getStringOption(attributes.before, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n \"pageEven\",\n \"pageOdd\",\n ]);\n this.beforeTarget = attributes.beforeTarget || \"\";\n this.bookendLeader = attributes.bookendLeader || \"\";\n this.bookendTrailer = attributes.bookendTrailer || \"\";\n this.id = attributes.id || \"\";\n this.overflowLeader = attributes.overflowLeader || \"\";\n this.overflowTarget = attributes.overflowTarget || \"\";\n this.overflowTrailer = attributes.overflowTrailer || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass BreakAfter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakAfter\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n}\n\nclass BreakBefore extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"breakBefore\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.startNew = getInteger({\n data: attributes.startNew,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.target = attributes.target || \"\";\n this.targetType = getStringOption(attributes.targetType, [\n \"auto\",\n \"contentArea\",\n \"pageArea\",\n ]);\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.script = null;\n }\n\n [$toHTML](availableSpace) {\n this[$extra] = {};\n return HTMLResult.FAILURE;\n }\n}\n\nclass Button extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"button\", /* hasChildren = */ true);\n this.highlight = getStringOption(attributes.highlight, [\n \"inverted\",\n \"none\",\n \"outline\",\n \"push\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: highlight.\n\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const htmlButton = {\n name: \"button\",\n attributes: {\n id: this[$uid],\n class: [\"xfaButton\"],\n style: {},\n },\n children: [],\n };\n\n for (const event of grandpa.event.children) {\n // if (true) break;\n if (event.activity !== \"click\" || !event.script) {\n continue;\n }\n const jsURL = recoverJsURL(event.script[$content]);\n if (!jsURL) {\n continue;\n }\n const href = fixURL(jsURL.url);\n if (!href) {\n continue;\n }\n\n // we've an url so generate a <a>\n htmlButton.children.push({\n name: \"a\",\n attributes: {\n id: \"link\" + this[$uid],\n href,\n newWindow: jsURL.newWindow,\n class: [\"xfaLink\"],\n style: {},\n },\n children: [],\n });\n }\n\n return HTMLResult.success(htmlButton);\n }\n}\n\nclass Calculate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"calculate\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getStringOption(attributes.override, [\n \"disabled\",\n \"error\",\n \"ignore\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.script = null;\n }\n}\n\nclass Caption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"caption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.placement = getStringOption(attributes.placement, [\n \"left\",\n \"bottom\",\n \"inline\",\n \"right\",\n \"top\",\n ]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.reserve = Math.ceil(getMeasurement(attributes.reserve));\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.font = null;\n this.margin = null;\n this.para = null;\n this.value = null;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$getExtra](availableSpace) {\n if (!this[$extra]) {\n let { width, height } = availableSpace;\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width = this.reserve <= 0 ? width : this.reserve;\n break;\n case \"top\":\n case \"bottom\":\n height = this.reserve <= 0 ? height : this.reserve;\n break;\n }\n\n this[$extra] = layoutNode(this, { width, height });\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n if (!this.value) {\n return HTMLResult.EMPTY;\n }\n\n this[$pushPara]();\n const value = this.value[$toHTML](availableSpace).html;\n\n if (!value) {\n this[$popPara]();\n return HTMLResult.EMPTY;\n }\n\n const savedReserve = this.reserve;\n if (this.reserve <= 0) {\n const { w, h } = this[$getExtra](availableSpace);\n switch (this.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n this.reserve = w;\n break;\n case \"top\":\n case \"bottom\":\n this.reserve = h;\n break;\n }\n }\n\n const children = [];\n if (typeof value === \"string\") {\n children.push({\n name: \"#text\",\n value,\n });\n } else {\n children.push(value);\n }\n\n const style = toStyle(this, \"font\", \"margin\", \"visibility\");\n switch (this.placement) {\n case \"left\":\n case \"right\":\n if (this.reserve > 0) {\n style.width = measureToString(this.reserve);\n }\n break;\n case \"top\":\n case \"bottom\":\n if (this.reserve > 0) {\n style.height = measureToString(this.reserve);\n }\n break;\n }\n\n setPara(this, null, value);\n this[$popPara]();\n\n this.reserve = savedReserve;\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style,\n class: [\"xfaCaption\"],\n },\n children,\n });\n }\n}\n\nclass Certificate extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificate\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Certificates extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"certificates\", /* hasChildren = */ true);\n this.credentialServerPolicy = getStringOption(\n attributes.credentialServerPolicy,\n [\"optional\", \"required\"]\n );\n this.id = attributes.id || \"\";\n this.url = attributes.url || \"\";\n this.urlPolicy = attributes.urlPolicy || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryption = null;\n this.issuers = null;\n this.keyUsage = null;\n this.oids = null;\n this.signing = null;\n this.subjectDNs = null;\n }\n}\n\nclass CheckButton extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"checkButton\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.mark = getStringOption(attributes.mark, [\n \"default\",\n \"check\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"square\",\n \"star\",\n ]);\n this.shape = getStringOption(attributes.shape, [\"square\", \"round\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: border, shape and mark.\n\n const style = toStyle(\"margin\");\n const size = measureToString(this.size);\n\n style.width = style.height = size;\n\n let type;\n let className;\n let groupId;\n const field = this[$getParent]()[$getParent]();\n const items =\n (field.items.children.length &&\n field.items.children[0][$toHTML]().html) ||\n [];\n const exportedValue = {\n on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n off: (items[1] !== undefined ? items[1] : \"off\").toString(),\n };\n\n const value = (field.value && field.value[$text]()) || \"off\";\n const checked = value === exportedValue.on || undefined;\n const container = field[$getSubformParent]();\n const fieldId = field[$uid];\n let dataId;\n\n if (container instanceof ExclGroup) {\n groupId = container[$uid];\n type = \"radio\";\n className = \"xfaRadio\";\n dataId = (container[$data] && container[$data][$uid]) || container[$uid];\n } else {\n type = \"checkbox\";\n className = \"xfaCheckbox\";\n dataId = (field[$data] && field[$data][$uid]) || field[$uid];\n }\n\n const input = {\n name: \"input\",\n attributes: {\n class: [className],\n style,\n fieldId,\n dataId,\n type,\n checked,\n xfaOn: exportedValue.on,\n xfaOff: exportedValue.off,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false,\n },\n };\n\n if (groupId) {\n input.attributes.name = groupId;\n }\n\n if (isRequired(field)) {\n input.attributes[\"aria-required\"] = true;\n input.attributes.required = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [input],\n });\n }\n}\n\nclass ChoiceList extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"choiceList\", /* hasChildren = */ true);\n this.commitOn = getStringOption(attributes.commitOn, [\"select\", \"exit\"]);\n this.id = attributes.id || \"\";\n this.open = getStringOption(attributes.open, [\n \"userControl\",\n \"always\",\n \"multiSelect\",\n \"onEntry\",\n ]);\n this.textEntry = getInteger({\n data: attributes.textEntry,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"margin\");\n const ui = this[$getParent]();\n const field = ui[$getParent]();\n const fontSize = (field.font && field.font.size) || 10;\n const optionStyle = {\n fontSize: `calc(${fontSize}px * var(--scale-factor))`,\n };\n const children = [];\n\n if (field.items.children.length > 0) {\n const items = field.items;\n let displayedIndex = 0;\n let saveIndex = 0;\n if (items.children.length === 2) {\n displayedIndex = items.children[0].save;\n saveIndex = 1 - displayedIndex;\n }\n const displayed = items.children[displayedIndex][$toHTML]().html;\n const values = items.children[saveIndex][$toHTML]().html;\n\n let selected = false;\n const value = (field.value && field.value[$text]()) || \"\";\n for (let i = 0, ii = displayed.length; i < ii; i++) {\n const option = {\n name: \"option\",\n attributes: {\n value: values[i] || displayed[i],\n style: optionStyle,\n },\n value: displayed[i],\n };\n if (values[i] === value) {\n option.attributes.selected = selected = true;\n }\n children.push(option);\n }\n\n if (!selected) {\n children.splice(0, 0, {\n name: \"option\",\n attributes: {\n hidden: true,\n selected: true,\n },\n value: \" \",\n });\n }\n }\n\n const selectAttributes = {\n class: [\"xfaSelect\"],\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false,\n };\n\n if (isRequired(field)) {\n selectAttributes[\"aria-required\"] = true;\n selectAttributes.required = true;\n }\n\n if (this.open === \"multiSelect\") {\n selectAttributes.multiple = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [\n {\n name: \"select\",\n children,\n attributes: selectAttributes,\n },\n ],\n });\n }\n}\n\nclass Color extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"color\", /* hasChildren = */ true);\n this.cSpace = getStringOption(attributes.cSpace, [\"SRGB\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.value = attributes.value ? getColor(attributes.value) : \"\";\n this.extras = null;\n }\n\n [$hasSettableValue]() {\n return false;\n }\n\n [$toStyle]() {\n return this.value\n ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\n : null;\n }\n}\n\nclass Comb extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"comb\");\n this.id = attributes.id || \"\";\n this.numberOfCells = getInteger({\n data: attributes.numberOfCells,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Connect extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"connect\", /* hasChildren = */ true);\n this.connection = attributes.connection || \"\";\n this.id = attributes.id || \"\";\n this.ref = attributes.ref || \"\";\n this.usage = getStringOption(attributes.usage, [\n \"exportAndImport\",\n \"exportOnly\",\n \"importOnly\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.picture = null;\n }\n}\n\nclass ContentArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"contentArea\", /* hasChildren = */ true);\n this.h = getMeasurement(attributes.h);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = getMeasurement(attributes.w);\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.desc = null;\n this.extras = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const left = measureToString(this.x);\n const top = measureToString(this.y);\n\n const style = {\n left,\n top,\n width: measureToString(this.w),\n height: measureToString(this.h),\n };\n\n const classNames = [\"xfaContentarea\"];\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {\n style,\n class: classNames,\n id: this[$uid],\n },\n });\n }\n}\n\nclass Corner extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"corner\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.inverted = getInteger({\n data: attributes.inverted,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.join = getStringOption(attributes.join, [\"square\", \"round\"]);\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.radius = getMeasurement(attributes.radius);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // In using CSS it's only possible to handle radius\n // (at least with basic css).\n // Is there a real use (interest ?) of all these properties ?\n // Maybe it's possible to implement them using svg and border-image...\n // TODO: implement all the missing properties.\n const style = toStyle(this, \"visibility\");\n style.radius = measureToString(this.join === \"square\" ? 0 : this.radius);\n return style;\n }\n}\n\nclass DateElement extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"date\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTime extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTime\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass DateTimeEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"dateTimeEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.picker = getStringOption(attributes.picker, [\"host\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n // When the picker is host we should use type=date for the input\n // but we need to put the buttons outside the text-field.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false,\n },\n };\n\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Decimal extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"decimal\");\n this.fracDigits = getInteger({\n data: attributes.fracDigits,\n defaultValue: 2,\n validate: x => true,\n });\n this.id = attributes.id || \"\";\n this.leadDigits = getInteger({\n data: attributes.leadDigits,\n defaultValue: -1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass DefaultUi extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"defaultUi\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass Desc extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"desc\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass DigestMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethod\", [\n \"\",\n \"SHA1\",\n \"SHA256\",\n \"SHA512\",\n \"RIPEMD160\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass DigestMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"digestMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.digestMethod = new XFAObjectArray();\n }\n}\n\nclass Draw extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"draw\", /* hasChildren = */ true);\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.border = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.value = null;\n this.setProperty = new XFAObjectArray();\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n this[$pushPara]();\n\n // If at least one dimension is missing and we've a text\n // then we can guess it in laying out the text.\n const savedW = this.w;\n const savedH = this.h;\n const { w, h, isBroken } = layoutNode(this, availableSpace);\n if (w && this.w === \"\") {\n // If the parent layout is lr-tb with a w=100 and we already have a child\n // which takes 90 on the current line.\n // If we have a text with a length (in px) equal to 100 then it'll be\n // splitted into almost 10 chunks: so it won't be nice.\n // So if we've potentially more width to provide in some parent containers\n // let's increase it to give a chance to have a better rendering.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n this.w = w;\n }\n if (h && this.h === \"\") {\n this.h = h;\n }\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"hAlign\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"rotate\",\n \"anchorType\",\n \"border\",\n \"margin\"\n );\n\n setMinMaxDimensions(this, style);\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n const classNames = [\"xfaDraw\"];\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children: [],\n };\n\n applyAssist(this, attributes);\n\n const bbox = computeBbox(this, html, availableSpace);\n\n const value = this.value ? this.value[$toHTML](availableSpace).html : null;\n if (value === null) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n html.children.push(value);\n setPara(this, style, value);\n\n this.w = savedW;\n this.h = savedH;\n\n this[$popPara]();\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Edge extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"edge\", /* hasChildren = */ true);\n this.cap = getStringOption(attributes.cap, [\"square\", \"butt\", \"round\"]);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.stroke = getStringOption(attributes.stroke, [\n \"solid\",\n \"dashDot\",\n \"dashDotDot\",\n \"dashed\",\n \"dotted\",\n \"embossed\",\n \"etched\",\n \"lowered\",\n \"raised\",\n ]);\n this.thickness = getMeasurement(attributes.thickness, \"0.5pt\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle]() {\n // TODO: dashDot & dashDotDot.\n const style = toStyle(this, \"visibility\");\n Object.assign(style, {\n linecap: this.cap,\n width: measureToString(this.thickness),\n color: this.color ? this.color[$toStyle]() : \"#000000\",\n style: \"\",\n });\n\n if (this.presence !== \"visible\") {\n style.style = \"none\";\n } else {\n switch (this.stroke) {\n case \"solid\":\n style.style = \"solid\";\n break;\n case \"dashDot\":\n style.style = \"dashed\";\n break;\n case \"dashDotDot\":\n style.style = \"dashed\";\n break;\n case \"dashed\":\n style.style = \"dashed\";\n break;\n case \"dotted\":\n style.style = \"dotted\";\n break;\n case \"embossed\":\n style.style = \"ridge\";\n break;\n case \"etched\":\n style.style = \"groove\";\n break;\n case \"lowered\":\n style.style = \"inset\";\n break;\n case \"raised\":\n style.style = \"outset\";\n break;\n }\n }\n return style;\n }\n}\n\nclass Encoding extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encoding\", [\n \"adbe.x509.rsa_sha1\",\n \"adbe.pkcs7.detached\",\n \"adbe.pkcs7.sha1\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Encodings extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encodings\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encoding = new XFAObjectArray();\n }\n}\n\nclass Encrypt extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encrypt\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = null;\n }\n}\n\nclass EncryptData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"encrypt\",\n \"decrypt\",\n ]);\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass EncryptionMethod extends OptionObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethod\", [\n \"\",\n \"AES256-CBC\",\n \"TRIPLEDES-CBC\",\n \"AES128-CBC\",\n \"AES192-CBC\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EncryptionMethods extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"encryptionMethods\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.encryptionMethod = new XFAObjectArray();\n }\n}\n\nclass Event extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"event\", /* hasChildren = */ true);\n this.activity = getStringOption(attributes.activity, [\n \"click\",\n \"change\",\n \"docClose\",\n \"docReady\",\n \"enter\",\n \"exit\",\n \"full\",\n \"indexChange\",\n \"initialize\",\n \"mouseDown\",\n \"mouseEnter\",\n \"mouseExit\",\n \"mouseUp\",\n \"postExecute\",\n \"postOpen\",\n \"postPrint\",\n \"postSave\",\n \"postSign\",\n \"postSubmit\",\n \"preExecute\",\n \"preOpen\",\n \"prePrint\",\n \"preSave\",\n \"preSign\",\n \"preSubmit\",\n \"ready\",\n \"validationState\",\n ]);\n this.id = attributes.id || \"\";\n this.listen = getStringOption(attributes.listen, [\n \"refOnly\",\n \"refAndDescendents\",\n ]);\n this.name = attributes.name || \"\";\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n\n // One-of properties\n this.encryptData = null;\n this.execute = null;\n this.script = null;\n this.signData = null;\n this.submit = null;\n }\n}\n\nclass ExData extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exData\");\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.maxLength = getInteger({\n data: attributes.maxLength,\n defaultValue: -1,\n validate: x => x >= -1,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"none\",\n \"base64\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$isCDATAXml]() {\n return this.contentType === \"text/html\";\n }\n\n [$onChild](child) {\n if (\n this.contentType === \"text/html\" &&\n child[$namespaceId] === NamespaceIds.xhtml.id\n ) {\n this[$content] = child;\n return true;\n }\n\n if (this.contentType === \"text/xml\") {\n this[$content] = child;\n return true;\n }\n\n return false;\n }\n\n [$toHTML](availableSpace) {\n if (this.contentType !== \"text/html\" || !this[$content]) {\n // TODO: fix other cases.\n return HTMLResult.EMPTY;\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass ExObject extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exObject\", /* hasChildren = */ true);\n this.archive = attributes.archive || \"\";\n this.classId = attributes.classId || \"\";\n this.codeBase = attributes.codeBase || \"\";\n this.codeType = attributes.codeType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n}\n\nclass ExclGroup extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"exclGroup\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$hasSettableValue]() {\n return true;\n }\n\n [$setValue](value) {\n for (const field of this.field.children) {\n if (!field.value) {\n const nodeValue = new Value({});\n field[$appendChild](nodeValue);\n field.value = nodeValue;\n }\n\n field.value[$setValue](value);\n }\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // See comment in Subform::[$isSplittable] for an explanation.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n return true;\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n if (\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n fixDimensions(this);\n\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n attributes,\n attempt: 0,\n line: null,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n const filter = new Set([\"field\"]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaExclgroup\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !this[$getTemplateRoot]()[$extra].noLayoutFailure\n ) {\n // See comment in Subform::[$toHTML].\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n\n if (this[$extra].attempt === maxRun) {\n if (!isSplittable) {\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n delete this[$extra];\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Execute extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"execute\");\n this.connection = attributes.connection || \"\";\n this.executeType = getStringOption(attributes.executeType, [\n \"import\",\n \"remerge\",\n ]);\n this.id = attributes.id || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Extras extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"extras\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n // (Spec) The XFA template grammar defines the extras and desc elements,\n // which can be used to add human-readable or machine-readable\n // data to a template.\n}\n\nclass Field extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"field\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.accessKey = attributes.accessKey || \"\";\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.rotate = getInteger({\n data: attributes.rotate,\n defaultValue: 0,\n validate: x => x % 90 === 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.border = null;\n this.calculate = null;\n this.caption = null;\n this.desc = null;\n this.extras = null;\n this.font = null;\n this.format = null;\n // For a choice list, one list is used to have display entries\n // and the other for the exported values\n this.items = new XFAObjectArray(2);\n this.keep = null;\n this.margin = null;\n this.para = null;\n this.traversal = null;\n this.ui = null;\n this.validate = null;\n this.value = null;\n this.bindItems = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$setValue](value) {\n _setValue(this, value);\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (!this.ui) {\n // It's allowed to not have an ui, specs say:\n // If the UI element contains no children or is not present,\n // the application chooses a default user interface for the\n // container, based on the type of the container's content.\n\n this.ui = new Ui({});\n this.ui[$globalData] = this[$globalData];\n this[$appendChild](this.ui);\n let node;\n\n // The items element can have 2 element max and\n // according to the items specs it's likely a good\n // way to guess the correct ui type.\n switch (this.items.children.length) {\n case 0:\n node = new TextEdit({});\n this.ui.textEdit = node;\n break;\n case 1:\n node = new CheckButton({});\n this.ui.checkButton = node;\n break;\n case 2:\n node = new ChoiceList({});\n this.ui.choiceList = node;\n break;\n }\n this.ui[$appendChild](node);\n }\n\n if (\n !this.ui ||\n this.presence === \"hidden\" ||\n this.presence === \"inactive\" ||\n this.h === 0 ||\n this.w === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n if (this.caption) {\n // Maybe we already tried to layout this field with\n // another availableSpace, so to avoid to use the cached\n // value just delete it.\n delete this.caption[$extra];\n }\n\n this[$pushPara]();\n\n const caption = this.caption\n ? this.caption[$toHTML](availableSpace).html\n : null;\n const savedW = this.w;\n const savedH = this.h;\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n let borderDims = null;\n if (this.w === \"\" || this.h === \"\") {\n let width = null;\n let height = null;\n\n let uiW = 0;\n let uiH = 0;\n if (this.ui.checkButton) {\n uiW = uiH = this.ui.checkButton.size;\n } else {\n const { w, h } = layoutNode(this, availableSpace);\n if (w !== null) {\n uiW = w;\n uiH = h;\n } else {\n uiH = getMetrics(this.font, /* real = */ true).lineNoGap;\n }\n }\n\n borderDims = getBorderDims(this.ui[$getExtra]());\n uiW += borderDims.w;\n uiH += borderDims.h;\n\n if (this.caption) {\n const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\n // See comment in Draw::[$toHTML] to have an explanation\n // about this line.\n if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n\n width = w;\n height = h;\n\n switch (this.caption.placement) {\n case \"left\":\n case \"right\":\n case \"inline\":\n width += uiW;\n break;\n case \"top\":\n case \"bottom\":\n height += uiH;\n break;\n }\n } else {\n width = uiW;\n height = uiH;\n }\n\n if (width && this.w === \"\") {\n width += marginH;\n this.w = Math.min(\n this.maxW <= 0 ? Infinity : this.maxW,\n this.minW + 1 < width ? width : this.minW\n );\n }\n\n if (height && this.h === \"\") {\n height += marginV;\n this.h = Math.min(\n this.maxH <= 0 ? Infinity : this.maxH,\n this.minH + 1 < height ? height : this.minH\n );\n }\n }\n\n this[$popPara]();\n\n fixDimensions(this);\n\n setFirstUnsplittable(this);\n if (!checkDimensions(this, availableSpace)) {\n this.w = savedW;\n this.h = savedH;\n this[$popPara]();\n return HTMLResult.FAILURE;\n }\n unsetFirstUnsplittable(this);\n\n const style = toStyle(\n this,\n \"font\",\n \"dimensions\",\n \"position\",\n \"rotate\",\n \"anchorType\",\n \"presence\",\n \"margin\",\n \"hAlign\"\n );\n\n setMinMaxDimensions(this, style);\n\n const classNames = [\"xfaField\"];\n // If no font, font properties are inherited.\n if (this.font) {\n classNames.push(\"xfaFont\");\n }\n\n if (isPrintOnly(this)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const attributes = {\n style,\n id: this[$uid],\n class: classNames,\n };\n\n if (style.margin) {\n style.padding = style.margin;\n delete style.margin;\n }\n\n setAccess(this, classNames);\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n const children = [];\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const borderStyle = this.border ? this.border[$toStyle]() : null;\n const bbox = computeBbox(this, html, availableSpace);\n const ui = this.ui[$toHTML]().html;\n if (!ui) {\n Object.assign(style, borderStyle);\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this[$tabIndex]) {\n if (ui.children && ui.children[0]) {\n ui.children[0].attributes.tabindex = this[$tabIndex];\n } else {\n ui.attributes.tabindex = this[$tabIndex];\n }\n }\n\n if (!ui.attributes.style) {\n ui.attributes.style = Object.create(null);\n }\n\n let aElement = null;\n\n if (this.ui.button) {\n if (ui.children.length === 1) {\n [aElement] = ui.children.splice(0, 1);\n }\n Object.assign(ui.attributes.style, borderStyle);\n } else {\n Object.assign(style, borderStyle);\n }\n\n children.push(ui);\n\n if (this.value) {\n if (this.ui.imageEdit) {\n ui.children.push(this.value[$toHTML]().html);\n } else if (!this.ui.button) {\n let value = \"\";\n if (this.value.exData) {\n value = this.value.exData[$text]();\n } else if (this.value.text) {\n value = this.value.text[$getExtra]();\n } else {\n const htmlValue = this.value[$toHTML]().html;\n if (htmlValue !== null) {\n value = htmlValue.children[0].value;\n }\n }\n if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n ui.children[0].attributes.maxLength = this.value.text.maxChars;\n }\n\n if (value) {\n if (this.ui.numericEdit) {\n value = parseFloat(value);\n value = isNaN(value) ? \"\" : value.toString();\n }\n\n if (ui.children[0].name === \"textarea\") {\n ui.children[0].attributes.textContent = value;\n } else {\n ui.children[0].attributes.value = value;\n }\n }\n }\n }\n\n if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\n\n let captionHeight = 0;\n if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n captionHeight = this.caption.reserve;\n if (captionHeight <= 0) {\n captionHeight = this.caption[$getExtra](availableSpace).h;\n }\n const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n ui.children[0].attributes.style.height = measureToString(inputHeight);\n } else {\n ui.children[0].attributes.style.height = \"100%\";\n }\n }\n\n if (aElement) {\n ui.children.push(aElement);\n }\n\n if (!caption) {\n if (ui.attributes.class) {\n // Even if no caption this class will help to center the ui.\n ui.attributes.class.push(\"xfaLeft\");\n }\n this.w = savedW;\n this.h = savedH;\n\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n\n if (this.ui.button) {\n if (style.padding) {\n delete style.padding;\n }\n if (caption.name === \"div\") {\n caption.name = \"span\";\n }\n ui.children.push(caption);\n return HTMLResult.success(html, bbox);\n } else if (this.ui.checkButton) {\n caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n }\n\n if (!ui.attributes.class) {\n ui.attributes.class = [];\n }\n\n ui.children.splice(0, 0, caption);\n\n switch (this.caption.placement) {\n case \"left\":\n ui.attributes.class.push(\"xfaLeft\");\n break;\n case \"right\":\n ui.attributes.class.push(\"xfaRight\");\n break;\n case \"top\":\n ui.attributes.class.push(\"xfaTop\");\n break;\n case \"bottom\":\n ui.attributes.class.push(\"xfaBottom\");\n break;\n case \"inline\":\n // TODO;\n ui.attributes.class.push(\"xfaLeft\");\n break;\n }\n\n this.w = savedW;\n this.h = savedH;\n return HTMLResult.success(createWrapper(this, html), bbox);\n }\n}\n\nclass Fill extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"fill\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n\n // One-of properties or none\n this.linear = null;\n this.pattern = null;\n this.radial = null;\n this.solid = null;\n this.stipple = null;\n }\n\n [$toStyle]() {\n const parent = this[$getParent]();\n const grandpa = parent[$getParent]();\n const ggrandpa = grandpa[$getParent]();\n const style = Object.create(null);\n\n // Use for color, i.e. #...\n let propName = \"color\";\n\n // Use for non-color, i.e. gradient, radial-gradient...\n let altPropName = propName;\n\n if (parent instanceof Border) {\n propName = \"background-color\";\n altPropName = \"background\";\n if (ggrandpa instanceof Ui) {\n // The default fill color is white.\n style.backgroundColor = \"white\";\n }\n }\n if (parent instanceof Rectangle || parent instanceof Arc) {\n propName = altPropName = \"fill\";\n style.fill = \"white\";\n }\n\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"color\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n const color = obj[$toStyle](this.color);\n if (color) {\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n return style;\n }\n\n if (this.color && this.color.value) {\n const color = this.color[$toStyle]();\n style[color.startsWith(\"#\") ? propName : altPropName] = color;\n }\n\n return style;\n }\n}\n\nclass Filter extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"filter\", /* hasChildren = */ true);\n this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\n \"\",\n \"required\",\n \"optional\",\n \"none\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.version = getInteger({\n data: this.version,\n defaultValue: 5,\n validate: x => x >= 1 && x <= 5,\n });\n this.appearanceFilter = null;\n this.certificates = null;\n this.digestMethods = null;\n this.encodings = null;\n this.encryptionMethods = null;\n this.handler = null;\n this.lockDocument = null;\n this.mdp = null;\n this.reasons = null;\n this.timeStamp = null;\n }\n}\n\nclass Float extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"float\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseFloat(this[$content].trim());\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Font extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"font\", /* hasChildren = */ true);\n this.baselineShift = getMeasurement(attributes.baselineShift);\n this.fontHorizontalScale = getFloat({\n data: attributes.fontHorizontalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.fontVerticalScale = getFloat({\n data: attributes.fontVerticalScale,\n defaultValue: 100,\n validate: x => x >= 0,\n });\n this.id = attributes.id || \"\";\n this.kerningMode = getStringOption(attributes.kerningMode, [\n \"none\",\n \"pair\",\n ]);\n this.letterSpacing = getMeasurement(attributes.letterSpacing, \"0\");\n this.lineThrough = getInteger({\n data: attributes.lineThrough,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\n \"all\",\n \"word\",\n ]);\n this.overline = getInteger({\n data: attributes.overline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.posture = getStringOption(attributes.posture, [\"normal\", \"italic\"]);\n this.size = getMeasurement(attributes.size, \"10pt\");\n this.typeface = attributes.typeface || \"Courier\";\n this.underline = getInteger({\n data: attributes.underline,\n defaultValue: 0,\n validate: x => x === 1 || x === 2,\n });\n this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\n \"all\",\n \"word\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.weight = getStringOption(attributes.weight, [\"normal\", \"bold\"]);\n this.extras = null;\n this.fill = null;\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this[$globalData].usedTypefaces.add(this.typeface);\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"fill\");\n const color = style.color;\n if (color) {\n if (color === \"#000000\") {\n // Default font color.\n delete style.color;\n } else if (!color.startsWith(\"#\")) {\n // We've a gradient which is not possible for a font color\n // so use a workaround.\n style.background = color;\n style.backgroundClip = \"text\";\n style.color = \"transparent\";\n }\n }\n\n if (this.baselineShift) {\n style.verticalAlign = measureToString(this.baselineShift);\n }\n\n // TODO: fontHorizontalScale\n // TODO: fontVerticalScale\n\n style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n style.letterSpacing = measureToString(this.letterSpacing);\n\n if (this.lineThrough !== 0) {\n style.textDecoration = \"line-through\";\n if (this.lineThrough === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: lineThroughPeriod\n\n if (this.overline !== 0) {\n style.textDecoration = \"overline\";\n if (this.overline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: overlinePeriod\n\n style.fontStyle = this.posture;\n style.fontSize = measureToString(0.99 * this.size);\n\n setFontFamily(this, this, this[$globalData].fontFinder, style);\n\n if (this.underline !== 0) {\n style.textDecoration = \"underline\";\n if (this.underline === 2) {\n style.textDecorationStyle = \"double\";\n }\n }\n\n // TODO: underlinePeriod\n\n style.fontWeight = this.weight;\n\n return style;\n }\n}\n\nclass Format extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"format\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n }\n}\n\nclass Handler extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"handler\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Hyphenation extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"hyphenation\");\n this.excludeAllCaps = getInteger({\n data: attributes.excludeAllCaps,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.excludeInitialCap = getInteger({\n data: attributes.excludeInitialCap,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hyphenate = getInteger({\n data: attributes.hyphenate,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.pushCharacterCount = getInteger({\n data: attributes.pushCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.remainCharacterCount = getInteger({\n data: attributes.remainCharacterCount,\n defaultValue: 3,\n validate: x => x >= 0,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.wordCharacterCount = getInteger({\n data: attributes.wordCharacterCount,\n defaultValue: 7,\n validate: x => x >= 0,\n });\n }\n}\n\nclass Image extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"image\");\n this.aspect = getStringOption(attributes.aspect, [\n \"fit\",\n \"actual\",\n \"height\",\n \"none\",\n \"width\",\n ]);\n this.contentType = attributes.contentType || \"\";\n this.href = attributes.href || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.transferEncoding = getStringOption(attributes.transferEncoding, [\n \"base64\",\n \"none\",\n \"package\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$toHTML]() {\n if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n return HTMLResult.EMPTY;\n }\n\n let buffer =\n this[$globalData].images && this[$globalData].images.get(this.href);\n if (!buffer && (this.href || !this[$content])) {\n // In general, we don't get remote data and use what we have\n // in the pdf itself, so no picture for non null href.\n return HTMLResult.EMPTY;\n }\n\n if (!buffer && this.transferEncoding === \"base64\") {\n buffer = stringToBytes(atob(this[$content]));\n }\n\n if (!buffer) {\n return HTMLResult.EMPTY;\n }\n\n if (!this.contentType) {\n for (const [header, type] of IMAGES_HEADERS) {\n if (\n buffer.length > header.length &&\n header.every((x, i) => x === buffer[i])\n ) {\n this.contentType = type;\n break;\n }\n }\n if (!this.contentType) {\n return HTMLResult.EMPTY;\n }\n }\n\n // TODO: Firefox doesn't support natively tiff (and tif) format.\n const blob = new Blob([buffer], { type: this.contentType });\n let style;\n switch (this.aspect) {\n case \"fit\":\n case \"actual\":\n // TODO: check what to do with actual.\n // Normally we should return {auto, auto} for it but\n // it implies some wrong rendering (see xfa_bug1716816.pdf).\n break;\n case \"height\":\n style = {\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"none\":\n style = {\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n };\n break;\n case \"width\":\n style = {\n width: \"100%\",\n objectFit: \"fill\",\n };\n break;\n }\n const parent = this[$getParent]();\n return HTMLResult.success({\n name: \"img\",\n attributes: {\n class: [\"xfaImage\"],\n style,\n src: URL.createObjectURL(blob),\n alt: parent ? ariaLabel(parent[$getParent]()) : null,\n },\n });\n }\n}\n\nclass ImageEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"imageEdit\", /* hasChildren = */ true);\n this.data = getStringOption(attributes.data, [\"link\", \"embed\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n if (this.data === \"embed\") {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n attributes: {},\n });\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Integer extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"integer\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n const number = parseInt(this[$content].trim(), 10);\n this[$content] = isNaN(number) ? null : number;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(\n this[$content] !== null ? this[$content].toString() : \"\"\n );\n }\n}\n\nclass Issuers extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"issuers\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Items extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"items\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.ref = attributes.ref || \"\";\n this.save = getInteger({\n data: attributes.save,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$toHTML]() {\n const output = [];\n for (const child of this[$getChildren]()) {\n output.push(child[$text]());\n }\n return HTMLResult.success(output);\n }\n}\n\nclass Keep extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keep\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n const options = [\"none\", \"contentArea\", \"pageArea\"];\n this.intact = getStringOption(attributes.intact, options);\n this.next = getStringOption(attributes.next, options);\n this.previous = getStringOption(attributes.previous, options);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n}\n\nclass KeyUsage extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"keyUsage\");\n const options = [\"\", \"yes\", \"no\"];\n this.crlSign = getStringOption(attributes.crlSign, options);\n this.dataEncipherment = getStringOption(\n attributes.dataEncipherment,\n options\n );\n this.decipherOnly = getStringOption(attributes.decipherOnly, options);\n this.digitalSignature = getStringOption(\n attributes.digitalSignature,\n options\n );\n this.encipherOnly = getStringOption(attributes.encipherOnly, options);\n this.id = attributes.id || \"\";\n this.keyAgreement = getStringOption(attributes.keyAgreement, options);\n this.keyCertSign = getStringOption(attributes.keyCertSign, options);\n this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\n this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Line extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"line\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.slope = getStringOption(attributes.slope, [\"\\\\\", \"/\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.edge = null;\n }\n\n [$toHTML]() {\n const parent = this[$getParent]()[$getParent]();\n const edge = this.edge || new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n style.strokeWidth = measureToString(thickness);\n style.stroke = edgeStyle.color;\n let x1, y1, x2, y2;\n let width = \"100%\";\n let height = \"100%\";\n\n if (parent.w <= thickness) {\n [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n width = style.strokeWidth;\n } else if (parent.h <= thickness) {\n [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n height = style.strokeWidth;\n } else {\n if (this.slope === \"\\\\\") {\n [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n } else {\n [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n }\n }\n\n const line = {\n name: \"line\",\n attributes: {\n xmlns: SVG_NS,\n x1,\n y1,\n x2,\n y2,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [line],\n attributes: {\n xmlns: SVG_NS,\n width,\n height,\n style: {\n overflow: \"visible\",\n },\n },\n };\n\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass Linear extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"linear\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"toRight\",\n \"toBottom\",\n \"toLeft\",\n \"toTop\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n }\n}\n\nclass LockDocument extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"lockDocument\");\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = getStringOption(this[$content], [\"auto\", \"0\", \"1\"]);\n }\n}\n\nclass Manifest extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"manifest\", /* hasChildren = */ true);\n this.action = getStringOption(attributes.action, [\n \"include\",\n \"all\",\n \"exclude\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.ref = new XFAObjectArray();\n }\n}\n\nclass Margin extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"margin\", /* hasChildren = */ true);\n this.bottomInset = getMeasurement(attributes.bottomInset, \"0\");\n this.id = attributes.id || \"\";\n this.leftInset = getMeasurement(attributes.leftInset, \"0\");\n this.rightInset = getMeasurement(attributes.rightInset, \"0\");\n this.topInset = getMeasurement(attributes.topInset, \"0\");\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle]() {\n return {\n margin:\n measureToString(this.topInset) +\n \" \" +\n measureToString(this.rightInset) +\n \" \" +\n measureToString(this.bottomInset) +\n \" \" +\n measureToString(this.leftInset),\n };\n }\n}\n\nclass Mdp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"mdp\");\n this.id = attributes.id || \"\";\n this.permissions = getInteger({\n data: attributes.permissions,\n defaultValue: 2,\n validate: x => x === 1 || x === 3,\n });\n this.signatureType = getStringOption(attributes.signatureType, [\n \"filler\",\n \"author\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Medium extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"medium\");\n this.id = attributes.id || \"\";\n this.imagingBBox = getBBox(attributes.imagingBBox);\n this.long = getMeasurement(attributes.long);\n this.orientation = getStringOption(attributes.orientation, [\n \"portrait\",\n \"landscape\",\n ]);\n this.short = getMeasurement(attributes.short);\n this.stock = attributes.stock || \"\";\n this.trayIn = getStringOption(attributes.trayIn, [\n \"auto\",\n \"delegate\",\n \"pageFront\",\n ]);\n this.trayOut = getStringOption(attributes.trayOut, [\"auto\", \"delegate\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"message\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.text = new XFAObjectArray();\n }\n}\n\nclass NumericEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"numericEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n const field = this[$getParent]()[$getParent]();\n const html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n fieldId: field[$uid],\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false,\n },\n };\n\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Occur extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"occur\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.initial =\n attributes.initial !== \"\"\n ? getInteger({\n data: attributes.initial,\n defaultValue: \"\",\n validate: x => true,\n })\n : \"\";\n this.max =\n attributes.max !== \"\"\n ? getInteger({\n data: attributes.max,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.min =\n attributes.min !== \"\"\n ? getInteger({\n data: attributes.min,\n defaultValue: 1,\n validate: x => true,\n })\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$clean]() {\n const parent = this[$getParent]();\n const originalMin = this.min;\n\n if (this.min === \"\") {\n this.min =\n parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n }\n if (this.max === \"\") {\n if (originalMin === \"\") {\n this.max =\n parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n } else {\n this.max = this.min;\n }\n }\n\n if (this.max !== -1 && this.max < this.min) {\n this.max = this.min;\n }\n\n if (this.initial === \"\") {\n this.initial = parent instanceof Template ? 1 : this.min;\n }\n }\n}\n\nclass Oid extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oid\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Oids extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"oids\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.oid = new XFAObjectArray();\n }\n}\n\nclass Overflow extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"overflow\");\n this.id = attributes.id || \"\";\n this.leader = attributes.leader || \"\";\n this.target = attributes.target || \"\";\n this.trailer = attributes.trailer || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$getExtra]() {\n if (!this[$extra]) {\n const parent = this[$getParent]();\n const root = this[$getTemplateRoot]();\n const target = root[$searchNode](this.target, parent);\n const leader = root[$searchNode](this.leader, parent);\n const trailer = root[$searchNode](this.trailer, parent);\n this[$extra] = {\n target: (target && target[0]) || null,\n leader: (leader && leader[0]) || null,\n trailer: (trailer && trailer[0]) || null,\n addLeader: false,\n addTrailer: false,\n };\n }\n return this[$extra];\n }\n}\n\nclass PageArea extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageArea\", /* hasChildren = */ true);\n this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\n \"any\",\n \"blank\",\n \"notBlank\",\n ]);\n this.id = attributes.id || \"\";\n this.initialNumber = getInteger({\n data: attributes.initialNumber,\n defaultValue: 1,\n validate: x => true,\n });\n this.name = attributes.name || \"\";\n this.numbered = getInteger({\n data: attributes.numbered,\n defaultValue: 1,\n validate: x => true,\n });\n this.oddOrEven = getStringOption(attributes.oddOrEven, [\n \"any\",\n \"even\",\n \"odd\",\n ]);\n this.pagePosition = getStringOption(attributes.pagePosition, [\n \"any\",\n \"first\",\n \"last\",\n \"only\",\n \"rest\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.desc = null;\n this.extras = null;\n this.medium = null;\n this.occur = null;\n this.area = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n }\n\n [$isUsable]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n return true;\n }\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$cleanPage]() {\n delete this[$extra];\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 0,\n };\n }\n\n const parent = this[$getParent]();\n if (parent.relation === \"orderedOccurrence\") {\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n return this;\n }\n }\n\n return parent[$getNextPage]();\n }\n\n [$getAvailableSpace]() {\n return this[$extra].space || { width: 0, height: 0 };\n }\n\n [$toHTML]() {\n // TODO: incomplete.\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n };\n }\n\n const children = [];\n this[$extra].children = children;\n\n const style = Object.create(null);\n if (this.medium && this.medium.short && this.medium.long) {\n style.width = measureToString(this.medium.short);\n style.height = measureToString(this.medium.long);\n this[$extra].space = {\n width: this.medium.short,\n height: this.medium.long,\n };\n if (this.medium.orientation === \"landscape\") {\n const x = style.width;\n style.width = style.height;\n style.height = x;\n this[$extra].space = {\n width: this.medium.long,\n height: this.medium.short,\n };\n }\n } else {\n warn(\"XFA - No medium specified in pageArea: please file a bug.\");\n }\n\n this[$childrenToHTML]({\n filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n include: true,\n });\n\n // contentarea must be the last container to be sure it is\n // on top of the others.\n this[$childrenToHTML]({\n filter: new Set([\"contentArea\"]),\n include: true,\n });\n\n return HTMLResult.success({\n name: \"div\",\n children,\n attributes: {\n class: [\"xfaPage\"],\n id: this[$uid],\n style,\n xfaName: this.name,\n },\n });\n }\n}\n\nclass PageSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pageSet\", /* hasChildren = */ true);\n this.duplexImposition = getStringOption(attributes.duplexImposition, [\n \"longEdge\",\n \"shortEdge\",\n ]);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"orderedOccurrence\",\n \"duplexPaginated\",\n \"simplexPaginated\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.occur = null;\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n }\n\n [$cleanPage]() {\n for (const page of this.pageArea.children) {\n page[$cleanPage]();\n }\n for (const page of this.pageSet.children) {\n page[$cleanPage]();\n }\n }\n\n [$isUsable]() {\n return (\n !this.occur ||\n this.occur.max === -1 ||\n this[$extra].numberOfUse < this.occur.max\n );\n }\n\n [$getNextPage]() {\n if (!this[$extra]) {\n this[$extra] = {\n numberOfUse: 1,\n pageIndex: -1,\n pageSetIndex: -1,\n };\n }\n\n if (this.relation === \"orderedOccurrence\") {\n if (this[$extra].pageIndex + 1 < this.pageArea.children.length) {\n this[$extra].pageIndex += 1;\n const pageArea = this.pageArea.children[this[$extra].pageIndex];\n return pageArea[$getNextPage]();\n }\n\n if (this[$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n this[$extra].pageSetIndex += 1;\n return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\n }\n\n if (this[$isUsable]()) {\n this[$extra].numberOfUse += 1;\n this[$extra].pageIndex = -1;\n this[$extra].pageSetIndex = -1;\n return this[$getNextPage]();\n }\n\n const parent = this[$getParent]();\n if (parent instanceof PageSet) {\n return parent[$getNextPage]();\n }\n\n this[$cleanPage]();\n return this[$getNextPage]();\n }\n const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\n const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n const position = pageNumber === 0 ? \"first\" : \"rest\";\n\n let page = this.pageArea.children.find(\n p => p.oddOrEven === parity && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === position\n );\n if (page) {\n return page;\n }\n\n page = this.pageArea.children.find(\n p => p.oddOrEven === \"any\" && p.pagePosition === \"any\"\n );\n if (page) {\n return page;\n }\n\n return this.pageArea.children[0];\n }\n}\n\nclass Para extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"para\", /* hasChildren = */ true);\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.lineHeight = attributes.lineHeight\n ? getMeasurement(attributes.lineHeight, \"0pt\")\n : \"\";\n this.marginLeft = attributes.marginLeft\n ? getMeasurement(attributes.marginLeft, \"0pt\")\n : \"\";\n this.marginRight = attributes.marginRight\n ? getMeasurement(attributes.marginRight, \"0pt\")\n : \"\";\n this.orphans = getInteger({\n data: attributes.orphans,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.preserve = attributes.preserve || \"\";\n this.radixOffset = attributes.radixOffset\n ? getMeasurement(attributes.radixOffset, \"0pt\")\n : \"\";\n this.spaceAbove = attributes.spaceAbove\n ? getMeasurement(attributes.spaceAbove, \"0pt\")\n : \"\";\n this.spaceBelow = attributes.spaceBelow\n ? getMeasurement(attributes.spaceBelow, \"0pt\")\n : \"\";\n this.tabDefault = attributes.tabDefault\n ? getMeasurement(this.tabDefault)\n : \"\";\n this.tabStops = (attributes.tabStops || \"\")\n .trim()\n .split(/\\s+/)\n .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\n this.textIndent = attributes.textIndent\n ? getMeasurement(attributes.textIndent, \"0pt\")\n : \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vAlign = getStringOption(attributes.vAlign, [\n \"top\",\n \"bottom\",\n \"middle\",\n ]);\n this.widows = getInteger({\n data: attributes.widows,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.hyphenation = null;\n }\n\n [$toStyle]() {\n const style = toStyle(this, \"hAlign\");\n if (this.marginLeft !== \"\") {\n style.paddingLeft = measureToString(this.marginLeft);\n }\n if (this.marginRight !== \"\") {\n style.paddingight = measureToString(this.marginRight);\n }\n if (this.spaceAbove !== \"\") {\n style.paddingTop = measureToString(this.spaceAbove);\n }\n if (this.spaceBelow !== \"\") {\n style.paddingBottom = measureToString(this.spaceBelow);\n }\n if (this.textIndent !== \"\") {\n style.textIndent = measureToString(this.textIndent);\n fixTextIndent(style);\n }\n\n if (this.lineHeight > 0) {\n style.lineHeight = measureToString(this.lineHeight);\n }\n\n if (this.tabDefault !== \"\") {\n style.tabSize = measureToString(this.tabDefault);\n }\n\n if (this.tabStops.length > 0) {\n // TODO\n }\n\n if (this.hyphenatation) {\n Object.assign(style, this.hyphenatation[$toStyle]());\n }\n\n return style;\n }\n}\n\nclass PasswordEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"passwordEdit\", /* hasChildren = */ true);\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.passwordChar = attributes.passwordChar || \"*\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.margin = null;\n }\n}\n\nclass Pattern extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"pattern\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\n \"crossHatch\",\n \"crossDiagonal\",\n \"diagonalLeft\",\n \"diagonalRight\",\n \"horizontal\",\n \"vertical\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const width = 5;\n const cmd = \"repeating-linear-gradient\";\n const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\n 2 * width\n }px`;\n switch (this.type) {\n case \"crossHatch\":\n return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n case \"crossDiagonal\":\n return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n case \"diagonalLeft\":\n return `${cmd}(45deg,${colors})`;\n case \"diagonalRight\":\n return `${cmd}(-45deg,${colors})`;\n case \"horizontal\":\n return `${cmd}(to top,${colors})`;\n case \"vertical\":\n return `${cmd}(to right,${colors})`;\n }\n\n return \"\";\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"picture\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Proto extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"proto\", /* hasChildren = */ true);\n this.appearanceFilter = new XFAObjectArray();\n this.arc = new XFAObjectArray();\n this.area = new XFAObjectArray();\n this.assist = new XFAObjectArray();\n this.barcode = new XFAObjectArray();\n this.bindItems = new XFAObjectArray();\n this.bookend = new XFAObjectArray();\n this.boolean = new XFAObjectArray();\n this.border = new XFAObjectArray();\n this.break = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.button = new XFAObjectArray();\n this.calculate = new XFAObjectArray();\n this.caption = new XFAObjectArray();\n this.certificate = new XFAObjectArray();\n this.certificates = new XFAObjectArray();\n this.checkButton = new XFAObjectArray();\n this.choiceList = new XFAObjectArray();\n this.color = new XFAObjectArray();\n this.comb = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.contentArea = new XFAObjectArray();\n this.corner = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.dateTimeEdit = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.defaultUi = new XFAObjectArray();\n this.desc = new XFAObjectArray();\n this.digestMethod = new XFAObjectArray();\n this.digestMethods = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.edge = new XFAObjectArray();\n this.encoding = new XFAObjectArray();\n this.encodings = new XFAObjectArray();\n this.encrypt = new XFAObjectArray();\n this.encryptData = new XFAObjectArray();\n this.encryption = new XFAObjectArray();\n this.encryptionMethod = new XFAObjectArray();\n this.encryptionMethods = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.execute = new XFAObjectArray();\n this.extras = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.fill = new XFAObjectArray();\n this.filter = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.font = new XFAObjectArray();\n this.format = new XFAObjectArray();\n this.handler = new XFAObjectArray();\n this.hyphenation = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.imageEdit = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.issuers = new XFAObjectArray();\n this.items = new XFAObjectArray();\n this.keep = new XFAObjectArray();\n this.keyUsage = new XFAObjectArray();\n this.line = new XFAObjectArray();\n this.linear = new XFAObjectArray();\n this.lockDocument = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.margin = new XFAObjectArray();\n this.mdp = new XFAObjectArray();\n this.medium = new XFAObjectArray();\n this.message = new XFAObjectArray();\n this.numericEdit = new XFAObjectArray();\n this.occur = new XFAObjectArray();\n this.oid = new XFAObjectArray();\n this.oids = new XFAObjectArray();\n this.overflow = new XFAObjectArray();\n this.pageArea = new XFAObjectArray();\n this.pageSet = new XFAObjectArray();\n this.para = new XFAObjectArray();\n this.passwordEdit = new XFAObjectArray();\n this.pattern = new XFAObjectArray();\n this.picture = new XFAObjectArray();\n this.radial = new XFAObjectArray();\n this.reason = new XFAObjectArray();\n this.reasons = new XFAObjectArray();\n this.rectangle = new XFAObjectArray();\n this.ref = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n this.signature = new XFAObjectArray();\n this.signing = new XFAObjectArray();\n this.solid = new XFAObjectArray();\n this.speak = new XFAObjectArray();\n this.stipple = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n this.subjectDN = new XFAObjectArray();\n this.subjectDNs = new XFAObjectArray();\n this.submit = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.textEdit = new XFAObjectArray();\n this.time = new XFAObjectArray();\n this.timeStamp = new XFAObjectArray();\n this.toolTip = new XFAObjectArray();\n this.traversal = new XFAObjectArray();\n this.traverse = new XFAObjectArray();\n this.ui = new XFAObjectArray();\n this.validate = new XFAObjectArray();\n this.value = new XFAObjectArray();\n this.variables = new XFAObjectArray();\n }\n}\n\nclass Radial extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"radial\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"toEdge\", \"toCenter\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n startColor = startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n const endColor = this.color ? this.color[$toStyle]() : \"#000000\";\n const colors =\n this.type === \"toEdge\"\n ? `${startColor},${endColor}`\n : `${endColor},${startColor}`;\n return `radial-gradient(circle at center, ${colors})`;\n }\n}\n\nclass Reason extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reason\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Reasons extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"reasons\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.reason = new XFAObjectArray();\n }\n}\n\nclass Rectangle extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"rectangle\", /* hasChildren = */ true);\n this.hand = getStringOption(attributes.hand, [\"even\", \"left\", \"right\"]);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.corner = new XFAObjectArray(4);\n this.edge = new XFAObjectArray(4);\n this.fill = null;\n }\n\n [$toHTML]() {\n const edge = this.edge.children.length\n ? this.edge.children[0]\n : new Edge({});\n const edgeStyle = edge[$toStyle]();\n const style = Object.create(null);\n if (this.fill && this.fill.presence === \"visible\") {\n Object.assign(style, this.fill[$toStyle]());\n } else {\n style.fill = \"transparent\";\n }\n style.strokeWidth = measureToString(\n edge.presence === \"visible\" ? edge.thickness : 0\n );\n style.stroke = edgeStyle.color;\n\n const corner = this.corner.children.length\n ? this.corner.children[0]\n : new Corner({});\n const cornerStyle = corner[$toStyle]();\n\n const rect = {\n name: \"rect\",\n attributes: {\n xmlns: SVG_NS,\n width: \"100%\",\n height: \"100%\",\n x: 0,\n y: 0,\n rx: cornerStyle.radius,\n ry: cornerStyle.radius,\n style,\n },\n };\n\n const svg = {\n name: \"svg\",\n children: [rect],\n attributes: {\n xmlns: SVG_NS,\n style: {\n overflow: \"visible\",\n },\n width: \"100%\",\n height: \"100%\",\n },\n };\n\n const parent = this[$getParent]()[$getParent]();\n if (hasMargin(parent)) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n style: {\n display: \"inline\",\n width: \"100%\",\n height: \"100%\",\n },\n },\n children: [svg],\n });\n }\n\n svg.attributes.style.position = \"absolute\";\n return HTMLResult.success(svg);\n }\n}\n\nclass RefElement extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ref\");\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Script extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"script\");\n this.binding = attributes.binding || \"\";\n this.contentType = attributes.contentType || \"\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.runAt = getStringOption(attributes.runAt, [\n \"client\",\n \"both\",\n \"server\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SetProperty extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"setProperty\");\n this.connection = attributes.connection || \"\";\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n }\n}\n\nclass SignData extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signData\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"sign\",\n \"clear\",\n \"verify\",\n ]);\n this.ref = attributes.ref || \"\";\n this.target = attributes.target || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.filter = null;\n this.manifest = null;\n }\n}\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signature\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.border = null;\n this.extras = null;\n this.filter = null;\n this.manifest = null;\n this.margin = null;\n }\n}\n\nclass Signing extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"signing\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.certificate = new XFAObjectArray();\n }\n}\n\nclass Solid extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"solid\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n }\n\n [$toStyle](startColor) {\n return startColor ? startColor[$toStyle]() : \"#FFFFFF\";\n }\n}\n\nclass Speak extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"speak\");\n this.disable = getInteger({\n data: attributes.disable,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.id = attributes.id || \"\";\n this.priority = getStringOption(attributes.priority, [\n \"custom\",\n \"caption\",\n \"name\",\n \"toolTip\",\n ]);\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Stipple extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"stipple\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.rate = getInteger({\n data: attributes.rate,\n defaultValue: 50,\n validate: x => x >= 0 && x <= 100,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.color = null;\n this.extras = null;\n }\n\n [$toStyle](bgColor) {\n const alpha = this.rate / 100;\n return Util.makeHexColor(\n Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\n Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\n Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\n );\n }\n}\n\nclass Subform extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subform\", /* hasChildren = */ true);\n this.access = getStringOption(attributes.access, [\n \"open\",\n \"nonInteractive\",\n \"protected\",\n \"readOnly\",\n ]);\n this.allowMacro = getInteger({\n data: attributes.allowMacro,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.anchorType = getStringOption(attributes.anchorType, [\n \"topLeft\",\n \"bottomCenter\",\n \"bottomLeft\",\n \"bottomRight\",\n \"middleCenter\",\n \"middleLeft\",\n \"middleRight\",\n \"topCenter\",\n \"topRight\",\n ]);\n this.colSpan = getInteger({\n data: attributes.colSpan,\n defaultValue: 1,\n validate: n => n >= 1 || n === -1,\n });\n this.columnWidths = (attributes.columnWidths || \"\")\n .trim()\n .split(/\\s+/)\n .map(x => (x === \"-1\" ? -1 : getMeasurement(x)));\n this.h = attributes.h ? getMeasurement(attributes.h) : \"\";\n this.hAlign = getStringOption(attributes.hAlign, [\n \"left\",\n \"center\",\n \"justify\",\n \"justifyAll\",\n \"radix\",\n \"right\",\n ]);\n this.id = attributes.id || \"\";\n this.layout = getStringOption(attributes.layout, [\n \"position\",\n \"lr-tb\",\n \"rl-row\",\n \"rl-tb\",\n \"row\",\n \"table\",\n \"tb\",\n ]);\n this.locale = attributes.locale || \"\";\n this.maxH = getMeasurement(attributes.maxH, \"0pt\");\n this.maxW = getMeasurement(attributes.maxW, \"0pt\");\n this.mergeMode = getStringOption(attributes.mergeMode, [\n \"consumeData\",\n \"matchTemplate\",\n ]);\n this.minH = getMeasurement(attributes.minH, \"0pt\");\n this.minW = getMeasurement(attributes.minW, \"0pt\");\n this.name = attributes.name || \"\";\n this.presence = getStringOption(attributes.presence, [\n \"visible\",\n \"hidden\",\n \"inactive\",\n \"invisible\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.restoreState = getStringOption(attributes.restoreState, [\n \"manual\",\n \"auto\",\n ]);\n this.scope = getStringOption(attributes.scope, [\"name\", \"none\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.w = attributes.w ? getMeasurement(attributes.w) : \"\";\n this.x = getMeasurement(attributes.x, \"0pt\");\n this.y = getMeasurement(attributes.y, \"0pt\");\n this.assist = null;\n this.bind = null;\n this.bookend = null;\n this.border = null;\n this.break = null;\n this.calculate = null;\n this.desc = null;\n this.extras = null;\n this.keep = null;\n this.margin = null;\n this.occur = null;\n this.overflow = null;\n this.pageSet = null;\n this.para = null;\n this.traversal = null;\n this.validate = null;\n this.variables = null;\n this.area = new XFAObjectArray();\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.connect = new XFAObjectArray();\n this.draw = new XFAObjectArray();\n this.event = new XFAObjectArray();\n this.exObject = new XFAObjectArray();\n this.exclGroup = new XFAObjectArray();\n this.field = new XFAObjectArray();\n this.proto = new XFAObjectArray();\n this.setProperty = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n }\n\n [$getSubformParent]() {\n const parent = this[$getParent]();\n if (parent instanceof SubformSet) {\n return parent[$getSubformParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n\n [$isThereMoreWidth]() {\n return (\n (this.layout.endsWith(\"-tb\") &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine > 0) ||\n this[$getParent]()[$isThereMoreWidth]()\n );\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$flushHTML]() {\n return flushHTML(this);\n }\n\n [$addHTML](html, bbox) {\n addHTML(this, html, bbox);\n }\n\n [$getAvailableSpace]() {\n return getAvailableSpace(this);\n }\n\n [$isSplittable]() {\n // We cannot cache the result here because the contentArea\n // can change.\n const parent = this[$getSubformParent]();\n if (!parent[$isSplittable]()) {\n return false;\n }\n\n if (this[$extra]._isSplittable !== undefined) {\n return this[$extra]._isSplittable;\n }\n\n if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (this.keep && this.keep.intact !== \"none\") {\n this[$extra]._isSplittable = false;\n return false;\n }\n\n if (\n parent.layout &&\n parent.layout.endsWith(\"-tb\") &&\n parent[$extra].numberInLine !== 0\n ) {\n // If parent can fit in w=100 and there's already an element which takes\n // 90 then we've 10 for this element. Suppose this element has a tb layout\n // and 5 elements have a width of 7 and the 6th has a width of 20:\n // then this element (and all its content) must move on the next line.\n // If this element is splittable then the first 5 children will stay\n // at the end of the line: we don't want that.\n return false;\n }\n\n this[$extra]._isSplittable = true;\n\n return true;\n }\n\n [$toHTML](availableSpace) {\n setTabIndex(this);\n\n if (this.break) {\n // break element is deprecated so plug it on one of its replacement\n // breakBefore or breakAfter.\n if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n const node = new BreakAfter({\n targetType: this.break.after,\n target: this.break.afterTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakAfter.push(node);\n }\n\n if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n const node = new BreakBefore({\n targetType: this.break.before,\n target: this.break.beforeTarget,\n startNew: this.break.startNew.toString(),\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.breakBefore.push(node);\n }\n\n if (this.break.overflowTarget !== \"\") {\n const node = new Overflow({\n target: this.break.overflowTarget,\n leader: this.break.overflowLeader,\n trailer: this.break.overflowTrailer,\n });\n node[$globalData] = this[$globalData];\n this[$appendChild](node);\n this.overflow.push(node);\n }\n\n this[$removeChild](this.break);\n this.break = null;\n }\n\n if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n return HTMLResult.EMPTY;\n }\n\n if (\n this.breakBefore.children.length > 1 ||\n this.breakAfter.children.length > 1\n ) {\n // Specs are always talking about the breakBefore element\n // and it doesn't really make sense to have several ones.\n warn(\n \"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\"\n );\n }\n\n if (this.breakBefore.children.length >= 1) {\n const breakBefore = this.breakBefore.children[0];\n if (handleBreak(breakBefore)) {\n return HTMLResult.breakNode(breakBefore);\n }\n }\n\n if (this[$extra] && this[$extra].afterBreakAfter) {\n return HTMLResult.EMPTY;\n }\n\n // TODO: incomplete.\n fixDimensions(this);\n const children = [];\n const attributes = {\n id: this[$uid],\n class: [],\n };\n\n setAccess(this, attributes.class);\n\n if (!this[$extra]) {\n this[$extra] = Object.create(null);\n }\n\n Object.assign(this[$extra], {\n children,\n line: null,\n attributes,\n attempt: 0,\n numberInLine: 0,\n availableSpace: {\n width: Math.min(this.w || Infinity, availableSpace.width),\n height: Math.min(this.h || Infinity, availableSpace.height),\n },\n width: 0,\n height: 0,\n prevHeight: 0,\n currentWidth: 0,\n });\n\n const root = this[$getTemplateRoot]();\n const savedNoLayoutFailure = root[$extra].noLayoutFailure;\n\n const isSplittable = this[$isSplittable]();\n if (!isSplittable) {\n setFirstUnsplittable(this);\n }\n\n if (!checkDimensions(this, availableSpace)) {\n return HTMLResult.FAILURE;\n }\n\n const filter = new Set([\n \"area\",\n \"draw\",\n \"exclGroup\",\n \"field\",\n \"subform\",\n \"subformSet\",\n ]);\n\n if (this.layout.includes(\"row\")) {\n const columnWidths = this[$getSubformParent]().columnWidths;\n if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n this[$extra].columnWidths = columnWidths;\n this[$extra].currentColumn = 0;\n }\n }\n\n const style = toStyle(\n this,\n \"anchorType\",\n \"dimensions\",\n \"position\",\n \"presence\",\n \"border\",\n \"margin\",\n \"hAlign\"\n );\n const classNames = [\"xfaSubform\"];\n const cl = layoutClass(this);\n if (cl) {\n classNames.push(cl);\n }\n\n attributes.style = style;\n attributes.class = classNames;\n\n if (this.name) {\n attributes.xfaName = this.name;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addLeader) {\n overflowExtra.addLeader = false;\n handleOverflow(this, overflowExtra.leader, availableSpace);\n }\n }\n\n this[$pushPara]();\n const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n for (; this[$extra].attempt < maxRun; this[$extra].attempt++) {\n if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n // If the layout is lr-tb then having attempt equals to\n // MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\n // on the next line so this on is empty.\n this[$extra].numberInLine = 0;\n }\n const result = this[$childrenToHTML]({\n filter,\n include: true,\n });\n if (result.success) {\n break;\n }\n if (result.isBreak()) {\n this[$popPara]();\n return result;\n }\n if (\n isLrTb &&\n this[$extra].attempt === 0 &&\n this[$extra].numberInLine === 0 &&\n !root[$extra].noLayoutFailure\n ) {\n // We're failing to put the first element on the line so no\n // need to test on the next line.\n // The goal is not only to avoid some useless checks but to avoid\n // bugs too: if a descendant managed to put a node and failed\n // on the next one, going to the next step here will imply to\n // visit the descendant again, clear [$extra].children and restart\n // on the failing node, consequently the first node just disappears\n // because it has never been flushed.\n this[$extra].attempt = maxRun;\n break;\n }\n }\n\n this[$popPara]();\n if (!isSplittable) {\n unsetFirstUnsplittable(this);\n }\n root[$extra].noLayoutFailure = savedNoLayoutFailure;\n\n if (this[$extra].attempt === maxRun) {\n if (this.overflow) {\n this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\n }\n\n if (!isSplittable) {\n // Since a new try will happen in a new container with maybe\n // new dimensions, we invalidate already layed out components.\n delete this[$extra];\n }\n return HTMLResult.FAILURE;\n }\n\n if (this.overflow) {\n const overflowExtra = this.overflow[$getExtra]();\n if (overflowExtra.addTrailer) {\n overflowExtra.addTrailer = false;\n handleOverflow(this, overflowExtra.trailer, availableSpace);\n }\n }\n\n let marginH = 0;\n let marginV = 0;\n if (this.margin) {\n marginH = this.margin.leftInset + this.margin.rightInset;\n marginV = this.margin.topInset + this.margin.bottomInset;\n }\n\n const width = Math.max(this[$extra].width + marginH, this.w || 0);\n const height = Math.max(this[$extra].height + marginV, this.h || 0);\n const bbox = [this.x, this.y, width, height];\n\n if (this.w === \"\") {\n style.width = measureToString(width);\n }\n if (this.h === \"\") {\n style.height = measureToString(height);\n }\n\n if (\n (style.width === \"0px\" || style.height === \"0px\") &&\n children.length === 0\n ) {\n return HTMLResult.EMPTY;\n }\n\n const html = {\n name: \"div\",\n attributes,\n children,\n };\n\n applyAssist(this, attributes);\n\n const result = HTMLResult.success(createWrapper(this, html), bbox);\n\n if (this.breakAfter.children.length >= 1) {\n const breakAfter = this.breakAfter.children[0];\n if (handleBreak(breakAfter)) {\n this[$extra].afterBreakAfter = result;\n return HTMLResult.breakNode(breakAfter);\n }\n }\n\n delete this[$extra];\n\n return result;\n }\n}\n\nclass SubformSet extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subformSet\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.relation = getStringOption(attributes.relation, [\n \"ordered\",\n \"choice\",\n \"unordered\",\n ]);\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.bookend = null;\n this.break = null;\n this.desc = null;\n this.extras = null;\n this.occur = null;\n this.overflow = null;\n this.breakAfter = new XFAObjectArray();\n this.breakBefore = new XFAObjectArray();\n this.subform = new XFAObjectArray();\n this.subformSet = new XFAObjectArray();\n\n // TODO: need to handle break stuff and relation.\n }\n\n *[$getContainedChildren]() {\n // This function is overriden in order to fake that subforms under\n // this set are in fact under parent subform.\n yield* getContainedChildren(this);\n }\n\n [$getSubformParent]() {\n let parent = this[$getParent]();\n while (!(parent instanceof Subform)) {\n parent = parent[$getParent]();\n }\n return parent;\n }\n\n [$isBindable]() {\n return true;\n }\n}\n\nclass SubjectDN extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDN\");\n this.delimiter = attributes.delimiter || \",\";\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content].split(this.delimiter).map(kv => {\n kv = kv.split(\"=\", 2);\n kv[0] = kv[0].trim();\n return kv;\n })\n );\n }\n}\n\nclass SubjectDNs extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"subjectDNs\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.subjectDN = new XFAObjectArray();\n }\n}\n\nclass Submit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"submit\", /* hasChildren = */ true);\n this.embedPDF = getInteger({\n data: attributes.embedPDF,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.format = getStringOption(attributes.format, [\n \"xdp\",\n \"formdata\",\n \"pdf\",\n \"urlencoded\",\n \"xfd\",\n \"xml\",\n ]);\n this.id = attributes.id || \"\";\n this.target = attributes.target || \"\";\n this.textEncoding = getKeyword({\n data: attributes.textEncoding\n ? attributes.textEncoding.toLowerCase()\n : \"\",\n defaultValue: \"\",\n validate: k =>\n [\n \"utf-8\",\n \"big-five\",\n \"fontspecific\",\n \"gbk\",\n \"gb-18030\",\n \"gb-2312\",\n \"ksc-5601\",\n \"none\",\n \"shift-jis\",\n \"ucs-2\",\n \"utf-16\",\n ].includes(k) || k.match(/iso-8859-\\d{2}/),\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.xdpContent = attributes.xdpContent || \"\";\n this.encrypt = null;\n this.encryptData = new XFAObjectArray();\n this.signData = new XFAObjectArray();\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"template\", /* hasChildren = */ true);\n this.baseProfile = getStringOption(attributes.baseProfile, [\n \"full\",\n \"interactiveForms\",\n ]);\n this.extras = null;\n\n // Spec is unclear:\n // A container element that describes a single subform capable of\n // enclosing other containers.\n // Can we have more than one subform ?\n this.subform = new XFAObjectArray();\n }\n\n [$finalize]() {\n if (this.subform.children.length === 0) {\n warn(\"XFA - No subforms in template node.\");\n }\n if (this.subform.children.length >= 2) {\n warn(\"XFA - Several subforms in template node: please file a bug.\");\n }\n this[$tabIndex] = DEFAULT_TAB_INDEX;\n }\n\n [$isSplittable]() {\n return true;\n }\n\n [$searchNode](expr, container) {\n if (expr.startsWith(\"#\")) {\n // This is an id.\n return [this[$ids].get(expr.slice(1))];\n }\n return searchNode(this, container, expr, true, true);\n }\n\n /**\n * This function is a generator because the conversion into\n * pages is done asynchronously and we want to save the state\n * of the function where we were in the previous iteration.\n */\n *[$toPages]() {\n if (!this.subform.children.length) {\n return HTMLResult.success({\n name: \"div\",\n children: [],\n });\n }\n this[$extra] = {\n overflowNode: null,\n firstUnsplittable: null,\n currentContentArea: null,\n currentPageArea: null,\n noLayoutFailure: false,\n pageNumber: 1,\n pagePosition: \"first\",\n oddOrEven: \"odd\",\n blankOrNotBlank: \"nonBlank\",\n paraStack: [],\n };\n\n const root = this.subform.children[0];\n root.pageSet[$cleanPage]();\n\n const pageAreas = root.pageSet.pageArea.children;\n const mainHtml = {\n name: \"div\",\n children: [],\n };\n\n let pageArea = null;\n let breakBefore = null;\n let breakBeforeTarget = null;\n if (root.breakBefore.children.length >= 1) {\n breakBefore = root.breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].breakBefore.children.length >= 1\n ) {\n breakBefore = root.subform.children[0].breakBefore.children[0];\n breakBeforeTarget = breakBefore.target;\n } else if (root.break && root.break.beforeTarget) {\n breakBefore = root.break;\n breakBeforeTarget = breakBefore.beforeTarget;\n } else if (\n root.subform.children.length >= 1 &&\n root.subform.children[0].break &&\n root.subform.children[0].break.beforeTarget\n ) {\n breakBefore = root.subform.children[0].break;\n breakBeforeTarget = breakBefore.beforeTarget;\n }\n\n if (breakBefore) {\n const target = this[$searchNode](\n breakBeforeTarget,\n breakBefore[$getParent]()\n );\n if (target instanceof PageArea) {\n pageArea = target;\n // Consume breakBefore.\n breakBefore[$extra] = {};\n }\n }\n\n if (!pageArea) {\n pageArea = pageAreas[0];\n }\n\n pageArea[$extra] = {\n numberOfUse: 1,\n };\n\n const pageAreaParent = pageArea[$getParent]();\n pageAreaParent[$extra] = {\n numberOfUse: 1,\n pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n pageSetIndex: 0,\n };\n\n let targetPageArea;\n let leader = null;\n let trailer = null;\n let hasSomething = true;\n let hasSomethingCounter = 0;\n let startIndex = 0;\n\n while (true) {\n if (!hasSomething) {\n mainHtml.children.pop();\n // Nothing has been added in the previous page\n if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n warn(\"XFA - Something goes wrong: please file a bug.\");\n return mainHtml;\n }\n } else {\n hasSomethingCounter = 0;\n }\n\n targetPageArea = null;\n this[$extra].currentPageArea = pageArea;\n const page = pageArea[$toHTML]().html;\n mainHtml.children.push(page);\n\n if (leader) {\n this[$extra].noLayoutFailure = true;\n page.children.push(leader[$toHTML](pageArea[$extra].space).html);\n leader = null;\n }\n\n if (trailer) {\n this[$extra].noLayoutFailure = true;\n page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\n trailer = null;\n }\n\n const contentAreas = pageArea.contentArea.children;\n const htmlContentAreas = page.children.filter(node =>\n node.attributes.class.includes(\"xfaContentarea\")\n );\n\n hasSomething = false;\n this[$extra].firstUnsplittable = null;\n this[$extra].noLayoutFailure = false;\n\n const flush = index => {\n const html = root[$flushHTML]();\n if (html) {\n hasSomething =\n hasSomething || (html.children && html.children.length !== 0);\n htmlContentAreas[index].children.push(html);\n }\n };\n\n for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\n const space = { width: contentArea.w, height: contentArea.h };\n startIndex = 0;\n\n if (leader) {\n htmlContentAreas[i].children.push(leader[$toHTML](space).html);\n leader = null;\n }\n\n if (trailer) {\n htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\n trailer = null;\n }\n\n const html = root[$toHTML](space);\n if (html.success) {\n if (html.html) {\n hasSomething =\n hasSomething ||\n (html.html.children && html.html.children.length !== 0);\n htmlContentAreas[i].children.push(html.html);\n } else if (!hasSomething && mainHtml.children.length > 1) {\n mainHtml.children.pop();\n }\n return mainHtml;\n }\n\n if (html.isBreak()) {\n const node = html.breakNode;\n flush(i);\n\n if (node.targetType === \"auto\") {\n continue;\n }\n\n if (node.leader) {\n leader = this[$searchNode](node.leader, node[$getParent]());\n leader = leader ? leader[0] : null;\n }\n\n if (node.trailer) {\n trailer = this[$searchNode](node.trailer, node[$getParent]());\n trailer = trailer ? trailer[0] : null;\n }\n\n if (node.targetType === \"pageArea\") {\n targetPageArea = node[$extra].target;\n i = Infinity;\n } else if (!node[$extra].target) {\n // We stay on the same page.\n i = node[$extra].index;\n } else {\n targetPageArea = node[$extra].target;\n startIndex = node[$extra].index + 1;\n i = Infinity;\n }\n\n continue;\n }\n\n if (this[$extra].overflowNode) {\n const node = this[$extra].overflowNode;\n this[$extra].overflowNode = null;\n\n const overflowExtra = node[$getExtra]();\n const target = overflowExtra.target;\n overflowExtra.addLeader = overflowExtra.leader !== null;\n overflowExtra.addTrailer = overflowExtra.trailer !== null;\n\n flush(i);\n\n const currentIndex = i;\n\n i = Infinity;\n if (target instanceof PageArea) {\n // We must stop the contentAreas filling and go to the next page.\n targetPageArea = target;\n } else if (target instanceof ContentArea) {\n const index = contentAreas.indexOf(target);\n if (index !== -1) {\n if (index > currentIndex) {\n // In the next loop iteration `i` will be incremented, note the\n // `continue` just below, hence we need to subtract one here.\n i = index - 1;\n } else {\n // The targetted contentArea has already been filled\n // so create a new page.\n startIndex = index;\n }\n } else {\n targetPageArea = target[$getParent]();\n startIndex = targetPageArea.contentArea.children.indexOf(target);\n }\n }\n continue;\n }\n\n flush(i);\n }\n\n this[$extra].pageNumber += 1;\n if (targetPageArea) {\n if (targetPageArea[$isUsable]()) {\n targetPageArea[$extra].numberOfUse += 1;\n } else {\n targetPageArea = null;\n }\n }\n pageArea = targetPageArea || pageArea[$getNextPage]();\n yield null;\n }\n }\n}\n\nclass Text extends ContentObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"text\");\n this.id = attributes.id || \"\";\n this.maxChars = getInteger({\n data: attributes.maxChars,\n defaultValue: 0,\n validate: x => x >= 0,\n });\n this.name = attributes.name || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$acceptWhitespace]() {\n return true;\n }\n\n [$onChild](child) {\n if (child[$namespaceId] === NamespaceIds.xhtml.id) {\n this[$content] = child;\n return true;\n }\n warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\n return false;\n }\n\n [$onText](str) {\n if (this[$content] instanceof XFAObject) {\n return;\n }\n super[$onText](str);\n }\n\n [$finalize]() {\n if (typeof this[$content] === \"string\") {\n this[$content] = this[$content].replace(/\\r\\n/g, \"\\n\");\n }\n }\n\n [$getExtra]() {\n if (typeof this[$content] === \"string\") {\n return this[$content]\n .split(/[\\u2029\\u2028\\n]/)\n .reduce((acc, line) => {\n if (line) {\n acc.push(line);\n }\n return acc;\n }, [])\n .join(\"\\n\");\n }\n return this[$content][$text]();\n }\n\n [$toHTML](availableSpace) {\n if (typeof this[$content] === \"string\") {\n // \\u2028 is a line separator.\n // \\u2029 is a paragraph separator.\n const html = valueToHtml(this[$content]).html;\n\n if (this[$content].includes(\"\\u2029\")) {\n // We've plain text containing a paragraph separator\n // so convert it into a set of <p>.\n html.name = \"div\";\n html.children = [];\n this[$content]\n .split(\"\\u2029\")\n .map(para =>\n // Convert a paragraph into a set of <span> (for lines)\n // separated by <br>.\n para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n acc.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n return acc;\n }, [])\n )\n .forEach(lines => {\n html.children.push({\n name: \"p\",\n children: lines,\n });\n });\n } else if (/[\\u2028\\n]/.test(this[$content])) {\n html.name = \"div\";\n html.children = [];\n // Convert plain text into a set of <span> (for lines)\n // separated by <br>.\n this[$content].split(/[\\u2028\\n]/).forEach(line => {\n html.children.push(\n {\n name: \"span\",\n value: line,\n },\n {\n name: \"br\",\n }\n );\n });\n }\n\n return HTMLResult.success(html);\n }\n\n return this[$content][$toHTML](availableSpace);\n }\n}\n\nclass TextEdit extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"textEdit\", /* hasChildren = */ true);\n this.allowRichText = getInteger({\n data: attributes.allowRichText,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.id = attributes.id || \"\";\n this.multiLine = getInteger({\n data: attributes.multiLine,\n defaultValue: \"\",\n validate: x => x === 0 || x === 1,\n });\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\n \"auto\",\n \"off\",\n \"on\",\n ]);\n this.border = null;\n this.comb = null;\n this.extras = null;\n this.margin = null;\n }\n\n [$toHTML](availableSpace) {\n // TODO: incomplete.\n const style = toStyle(this, \"border\", \"font\", \"margin\");\n let html;\n const field = this[$getParent]()[$getParent]();\n if (this.multiLine === \"\") {\n this.multiLine = field instanceof Draw ? 1 : 0;\n }\n if (this.multiLine === 1) {\n html = {\n name: \"textarea\",\n attributes: {\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false,\n },\n };\n } else {\n html = {\n name: \"input\",\n attributes: {\n type: \"text\",\n dataId: (field[$data] && field[$data][$uid]) || field[$uid],\n fieldId: field[$uid],\n class: [\"xfaTextfield\"],\n style,\n \"aria-label\": ariaLabel(field),\n \"aria-required\": false,\n },\n };\n }\n\n if (isRequired(field)) {\n html.attributes[\"aria-required\"] = true;\n html.attributes.required = true;\n }\n\n return HTMLResult.success({\n name: \"label\",\n attributes: {\n class: [\"xfaLabel\"],\n },\n children: [html],\n });\n }\n}\n\nclass Time extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"time\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n\n [$finalize]() {\n // TODO: need to handle the string as a time and not as a date.\n const date = this[$content].trim();\n this[$content] = date ? new Date(date) : null;\n }\n\n [$toHTML](availableSpace) {\n return valueToHtml(this[$content] ? this[$content].toString() : \"\");\n }\n}\n\nclass TimeStamp extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"timeStamp\");\n this.id = attributes.id || \"\";\n this.server = attributes.server || \"\";\n this.type = getStringOption(attributes.type, [\"optional\", \"required\"]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass ToolTip extends StringObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"toolTip\");\n this.id = attributes.id || \"\";\n this.rid = attributes.rid || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Traversal extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traversal\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.traverse = new XFAObjectArray();\n }\n}\n\nclass Traverse extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"traverse\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.operation = getStringOption(attributes.operation, [\n \"next\",\n \"back\",\n \"down\",\n \"first\",\n \"left\",\n \"right\",\n \"up\",\n ]);\n this.ref = attributes.ref || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.script = null;\n }\n\n get name() {\n // SOM expression: see page 94\n return this.operation;\n }\n\n [$isTransparent]() {\n return false;\n }\n}\n\nclass Ui extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"ui\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.picture = null;\n\n // One-of properties\n this.barcode = null;\n this.button = null;\n this.checkButton = null;\n this.choiceList = null;\n this.dateTimeEdit = null;\n this.defaultUi = null;\n this.imageEdit = null;\n this.numericEdit = null;\n this.passwordEdit = null;\n this.signature = null;\n this.textEdit = null;\n }\n\n [$getExtra]() {\n if (this[$extra] === undefined) {\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"extras\" || name === \"picture\") {\n continue;\n }\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n this[$extra] = obj;\n return obj;\n }\n this[$extra] = null;\n }\n return this[$extra];\n }\n\n [$toHTML](availableSpace) {\n // TODO: picture.\n const obj = this[$getExtra]();\n if (obj) {\n return obj[$toHTML](availableSpace);\n }\n return HTMLResult.EMPTY;\n }\n}\n\nclass Validate extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"validate\", /* hasChildren = */ true);\n this.formatTest = getStringOption(attributes.formatTest, [\n \"warning\",\n \"disabled\",\n \"error\",\n ]);\n this.id = attributes.id || \"\";\n this.nullTest = getStringOption(attributes.nullTest, [\n \"disabled\",\n \"error\",\n \"warning\",\n ]);\n this.scriptTest = getStringOption(attributes.scriptTest, [\n \"error\",\n \"disabled\",\n \"warning\",\n ]);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.extras = null;\n this.message = null;\n this.picture = null;\n this.script = null;\n }\n}\n\nclass Value extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"value\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.override = getInteger({\n data: attributes.override,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.relevant = getRelevant(attributes.relevant);\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n\n // One-of properties\n this.arc = null;\n this.boolean = null;\n this.date = null;\n this.dateTime = null;\n this.decimal = null;\n this.exData = null;\n this.float = null;\n this.image = null;\n this.integer = null;\n this.line = null;\n this.rectangle = null;\n this.text = null;\n this.time = null;\n }\n\n [$setValue](value) {\n const parent = this[$getParent]();\n if (parent instanceof Field) {\n if (parent.ui && parent.ui.imageEdit) {\n if (!this.image) {\n this.image = new Image({});\n this[$appendChild](this.image);\n }\n this.image[$content] = value[$content];\n return;\n }\n }\n\n const valueName = value[$nodeName];\n if (this[valueName] !== null) {\n this[valueName][$content] = value[$content];\n return;\n }\n\n // Reset all the properties.\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (obj instanceof XFAObject) {\n this[name] = null;\n this[$removeChild](obj);\n }\n }\n\n this[value[$nodeName]] = value;\n this[$appendChild](value);\n }\n\n [$text]() {\n if (this.exData) {\n if (typeof this.exData[$content] === \"string\") {\n return this.exData[$content].trim();\n }\n return this.exData[$content][$text]().trim();\n }\n for (const name of Object.getOwnPropertyNames(this)) {\n if (name === \"image\") {\n continue;\n }\n const obj = this[name];\n if (obj instanceof XFAObject) {\n return (obj[$content] || \"\").toString().trim();\n }\n }\n return null;\n }\n\n [$toHTML](availableSpace) {\n for (const name of Object.getOwnPropertyNames(this)) {\n const obj = this[name];\n if (!(obj instanceof XFAObject)) {\n continue;\n }\n\n return obj[$toHTML](availableSpace);\n }\n\n return HTMLResult.EMPTY;\n }\n}\n\nclass Variables extends XFAObject {\n constructor(attributes) {\n super(TEMPLATE_NS_ID, \"variables\", /* hasChildren = */ true);\n this.id = attributes.id || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n this.boolean = new XFAObjectArray();\n this.date = new XFAObjectArray();\n this.dateTime = new XFAObjectArray();\n this.decimal = new XFAObjectArray();\n this.exData = new XFAObjectArray();\n this.float = new XFAObjectArray();\n this.image = new XFAObjectArray();\n this.integer = new XFAObjectArray();\n this.manifest = new XFAObjectArray();\n this.script = new XFAObjectArray();\n this.text = new XFAObjectArray();\n this.time = new XFAObjectArray();\n }\n\n [$isTransparent]() {\n return true;\n }\n}\n\nclass TemplateNamespace {\n static [$buildXFAObject](name, attributes) {\n if (TemplateNamespace.hasOwnProperty(name)) {\n const node = TemplateNamespace[name](attributes);\n node[$setSetAttributes](attributes);\n return node;\n }\n return undefined;\n }\n\n static appearanceFilter(attrs) {\n return new AppearanceFilter(attrs);\n }\n\n static arc(attrs) {\n return new Arc(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static assist(attrs) {\n return new Assist(attrs);\n }\n\n static barcode(attrs) {\n return new Barcode(attrs);\n }\n\n static bind(attrs) {\n return new Bind(attrs);\n }\n\n static bindItems(attrs) {\n return new BindItems(attrs);\n }\n\n static bookend(attrs) {\n return new Bookend(attrs);\n }\n\n static boolean(attrs) {\n return new BooleanElement(attrs);\n }\n\n static border(attrs) {\n return new Border(attrs);\n }\n\n static break(attrs) {\n return new Break(attrs);\n }\n\n static breakAfter(attrs) {\n return new BreakAfter(attrs);\n }\n\n static breakBefore(attrs) {\n return new BreakBefore(attrs);\n }\n\n static button(attrs) {\n return new Button(attrs);\n }\n\n static calculate(attrs) {\n return new Calculate(attrs);\n }\n\n static caption(attrs) {\n return new Caption(attrs);\n }\n\n static certificate(attrs) {\n return new Certificate(attrs);\n }\n\n static certificates(attrs) {\n return new Certificates(attrs);\n }\n\n static checkButton(attrs) {\n return new CheckButton(attrs);\n }\n\n static choiceList(attrs) {\n return new ChoiceList(attrs);\n }\n\n static color(attrs) {\n return new Color(attrs);\n }\n\n static comb(attrs) {\n return new Comb(attrs);\n }\n\n static connect(attrs) {\n return new Connect(attrs);\n }\n\n static contentArea(attrs) {\n return new ContentArea(attrs);\n }\n\n static corner(attrs) {\n return new Corner(attrs);\n }\n\n static date(attrs) {\n return new DateElement(attrs);\n }\n\n static dateTime(attrs) {\n return new DateTime(attrs);\n }\n\n static dateTimeEdit(attrs) {\n return new DateTimeEdit(attrs);\n }\n\n static decimal(attrs) {\n return new Decimal(attrs);\n }\n\n static defaultUi(attrs) {\n return new DefaultUi(attrs);\n }\n\n static desc(attrs) {\n return new Desc(attrs);\n }\n\n static digestMethod(attrs) {\n return new DigestMethod(attrs);\n }\n\n static digestMethods(attrs) {\n return new DigestMethods(attrs);\n }\n\n static draw(attrs) {\n return new Draw(attrs);\n }\n\n static edge(attrs) {\n return new Edge(attrs);\n }\n\n static encoding(attrs) {\n return new Encoding(attrs);\n }\n\n static encodings(attrs) {\n return new Encodings(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryptData(attrs) {\n return new EncryptData(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionMethod(attrs) {\n return new EncryptionMethod(attrs);\n }\n\n static encryptionMethods(attrs) {\n return new EncryptionMethods(attrs);\n }\n\n static event(attrs) {\n return new Event(attrs);\n }\n\n static exData(attrs) {\n return new ExData(attrs);\n }\n\n static exObject(attrs) {\n return new ExObject(attrs);\n }\n\n static exclGroup(attrs) {\n return new ExclGroup(attrs);\n }\n\n static execute(attrs) {\n return new Execute(attrs);\n }\n\n static extras(attrs) {\n return new Extras(attrs);\n }\n\n static field(attrs) {\n return new Field(attrs);\n }\n\n static fill(attrs) {\n return new Fill(attrs);\n }\n\n static filter(attrs) {\n return new Filter(attrs);\n }\n\n static float(attrs) {\n return new Float(attrs);\n }\n\n static font(attrs) {\n return new Font(attrs);\n }\n\n static format(attrs) {\n return new Format(attrs);\n }\n\n static handler(attrs) {\n return new Handler(attrs);\n }\n\n static hyphenation(attrs) {\n return new Hyphenation(attrs);\n }\n\n static image(attrs) {\n return new Image(attrs);\n }\n\n static imageEdit(attrs) {\n return new ImageEdit(attrs);\n }\n\n static integer(attrs) {\n return new Integer(attrs);\n }\n\n static issuers(attrs) {\n return new Issuers(attrs);\n }\n\n static items(attrs) {\n return new Items(attrs);\n }\n\n static keep(attrs) {\n return new Keep(attrs);\n }\n\n static keyUsage(attrs) {\n return new KeyUsage(attrs);\n }\n\n static line(attrs) {\n return new Line(attrs);\n }\n\n static linear(attrs) {\n return new Linear(attrs);\n }\n\n static lockDocument(attrs) {\n return new LockDocument(attrs);\n }\n\n static manifest(attrs) {\n return new Manifest(attrs);\n }\n\n static margin(attrs) {\n return new Margin(attrs);\n }\n\n static mdp(attrs) {\n return new Mdp(attrs);\n }\n\n static medium(attrs) {\n return new Medium(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static numericEdit(attrs) {\n return new NumericEdit(attrs);\n }\n\n static occur(attrs) {\n return new Occur(attrs);\n }\n\n static oid(attrs) {\n return new Oid(attrs);\n }\n\n static oids(attrs) {\n return new Oids(attrs);\n }\n\n static overflow(attrs) {\n return new Overflow(attrs);\n }\n\n static pageArea(attrs) {\n return new PageArea(attrs);\n }\n\n static pageSet(attrs) {\n return new PageSet(attrs);\n }\n\n static para(attrs) {\n return new Para(attrs);\n }\n\n static passwordEdit(attrs) {\n return new PasswordEdit(attrs);\n }\n\n static pattern(attrs) {\n return new Pattern(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static proto(attrs) {\n return new Proto(attrs);\n }\n\n static radial(attrs) {\n return new Radial(attrs);\n }\n\n static reason(attrs) {\n return new Reason(attrs);\n }\n\n static reasons(attrs) {\n return new Reasons(attrs);\n }\n\n static rectangle(attrs) {\n return new Rectangle(attrs);\n }\n\n static ref(attrs) {\n return new RefElement(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static setProperty(attrs) {\n return new SetProperty(attrs);\n }\n\n static signData(attrs) {\n return new SignData(attrs);\n }\n\n static signature(attrs) {\n return new Signature(attrs);\n }\n\n static signing(attrs) {\n return new Signing(attrs);\n }\n\n static solid(attrs) {\n return new Solid(attrs);\n }\n\n static speak(attrs) {\n return new Speak(attrs);\n }\n\n static stipple(attrs) {\n return new Stipple(attrs);\n }\n\n static subform(attrs) {\n return new Subform(attrs);\n }\n\n static subformSet(attrs) {\n return new SubformSet(attrs);\n }\n\n static subjectDN(attrs) {\n return new SubjectDN(attrs);\n }\n\n static subjectDNs(attrs) {\n return new SubjectDNs(attrs);\n }\n\n static submit(attrs) {\n return new Submit(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static text(attrs) {\n return new Text(attrs);\n }\n\n static textEdit(attrs) {\n return new TextEdit(attrs);\n }\n\n static time(attrs) {\n return new Time(attrs);\n }\n\n static timeStamp(attrs) {\n return new TimeStamp(attrs);\n }\n\n static toolTip(attrs) {\n return new ToolTip(attrs);\n }\n\n static traversal(attrs) {\n return new Traversal(attrs);\n }\n\n static traverse(attrs) {\n return new Traverse(attrs);\n }\n\n static ui(attrs) {\n return new Ui(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static value(attrs) {\n return new Value(attrs);\n }\n\n static variables(attrs) {\n return new Variables(attrs);\n }\n}\n\nexport {\n BindItems,\n Field,\n Items,\n SetProperty,\n Template,\n TemplateNamespace,\n Text,\n Value,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $extra,\n $flushHTML,\n $getSubformParent,\n $getTemplateRoot,\n $isSplittable,\n $isThereMoreWidth,\n} from \"./xfa_object.js\";\nimport { measureToString } from \"./html_utils.js\";\n\n// Subform and ExclGroup have a layout so they share these functions.\n\n/**\n * How layout works ?\n *\n * A container has an initial space (with a width and a height) to fit in,\n * which means that once all the children have been added then\n * the total width/height must be lower than the given ones in\n * the initial space.\n * So if the container has known dimensions and these ones are ok with the\n * space then continue else we return HTMLResult.FAILURE: it's up to the\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\n * we fail to add a child at end of line (lr) then we try to add it on the\n * next line).\n * And then we run through the children, each child gets its initial space\n * in calling its parent $getAvailableSpace method\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\n * then we try to layout child in its space. If everything is ok then we add\n * the result to its parent through $addHTML which will recompute the available\n * space in parent according to its layout property else we return\n * HTMLResult.Failure.\n * Before a failure some children may have been layed out: they've been saved in\n * [$extra].children and [$extra] has properties generator and failingNode\n * in order to save the state where we were before a failure.\n * This [$extra].children property is useful when a container has to be splited.\n * So if a container is unbreakable, we must delete its [$extra] property before\n * returning.\n */\n\nfunction createLine(node, children) {\n return {\n name: \"div\",\n attributes: {\n class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"],\n },\n children,\n };\n}\n\nfunction flushHTML(node) {\n if (!node[$extra]) {\n return null;\n }\n\n const attributes = node[$extra].attributes;\n const html = {\n name: \"div\",\n attributes,\n children: node[$extra].children,\n };\n\n if (node[$extra].failingNode) {\n const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\n if (htmlFromFailing) {\n if (node.layout.endsWith(\"-tb\")) {\n html.children.push(createLine(node, [htmlFromFailing]));\n } else {\n html.children.push(htmlFromFailing);\n }\n }\n }\n\n if (html.children.length === 0) {\n return null;\n }\n\n return html;\n}\n\nfunction addHTML(node, html, bbox) {\n const extra = node[$extra];\n const availableSpace = extra.availableSpace;\n\n const [x, y, w, h] = bbox;\n switch (node.layout) {\n case \"position\": {\n extra.width = Math.max(extra.width, x + w);\n extra.height = Math.max(extra.height, y + h);\n extra.children.push(html);\n break;\n }\n case \"lr-tb\":\n case \"rl-tb\":\n if (!extra.line || extra.attempt === 1) {\n extra.line = createLine(node, []);\n extra.children.push(extra.line);\n extra.numberInLine = 0;\n }\n\n extra.numberInLine += 1;\n extra.line.children.push(html);\n\n if (extra.attempt === 0) {\n // Add the element on the line\n extra.currentWidth += w;\n extra.height = Math.max(extra.height, extra.prevHeight + h);\n } else {\n extra.currentWidth = w;\n extra.prevHeight = extra.height;\n extra.height += h;\n\n // The element has been added on a new line so switch to line mode now.\n extra.attempt = 0;\n }\n extra.width = Math.max(extra.width, extra.currentWidth);\n break;\n case \"rl-row\":\n case \"row\": {\n extra.children.push(html);\n extra.width += w;\n extra.height = Math.max(extra.height, h);\n const height = measureToString(extra.height);\n for (const child of extra.children) {\n child.attributes.style.height = height;\n }\n break;\n }\n case \"table\": {\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n case \"tb\": {\n // Even if the subform can possibly take all the available width,\n // we must compute the final width as it is in order to be able\n // for example to center the subform within its parent.\n extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n extra.height += h;\n extra.children.push(html);\n break;\n }\n }\n}\n\nfunction getAvailableSpace(node) {\n const availableSpace = node[$extra].availableSpace;\n const marginV = node.margin\n ? node.margin.topInset + node.margin.bottomInset\n : 0;\n const marginH = node.margin\n ? node.margin.leftInset + node.margin.rightInset\n : 0;\n\n switch (node.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (node[$extra].attempt === 0) {\n return {\n width: availableSpace.width - marginH - node[$extra].currentWidth,\n height: availableSpace.height - marginV - node[$extra].prevHeight,\n };\n }\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"rl-row\":\n case \"row\":\n const width = node[$extra].columnWidths\n .slice(node[$extra].currentColumn)\n .reduce((a, x) => a + x);\n return { width, height: availableSpace.height - marginH };\n case \"table\":\n case \"tb\":\n return {\n width: availableSpace.width - marginH,\n height: availableSpace.height - marginV - node[$extra].height,\n };\n case \"position\":\n default:\n return availableSpace;\n }\n}\n\nfunction getTransformedBBox(node) {\n // Take into account rotation and anchor to get the real bounding box.\n let w = node.w === \"\" ? NaN : node.w;\n let h = node.h === \"\" ? NaN : node.h;\n let [centerX, centerY] = [0, 0];\n switch (node.anchorType || \"\") {\n case \"bottomCenter\":\n [centerX, centerY] = [w / 2, h];\n break;\n case \"bottomLeft\":\n [centerX, centerY] = [0, h];\n break;\n case \"bottomRight\":\n [centerX, centerY] = [w, h];\n break;\n case \"middleCenter\":\n [centerX, centerY] = [w / 2, h / 2];\n break;\n case \"middleLeft\":\n [centerX, centerY] = [0, h / 2];\n break;\n case \"middleRight\":\n [centerX, centerY] = [w, h / 2];\n break;\n case \"topCenter\":\n [centerX, centerY] = [w / 2, 0];\n break;\n case \"topRight\":\n [centerX, centerY] = [w, 0];\n break;\n }\n\n let x, y;\n switch (node.rotate || 0) {\n case 0:\n [x, y] = [-centerX, -centerY];\n break;\n case 90:\n [x, y] = [-centerY, centerX];\n [w, h] = [h, -w];\n break;\n case 180:\n [x, y] = [centerX, centerY];\n [w, h] = [-w, -h];\n break;\n case 270:\n [x, y] = [centerY, -centerX];\n [w, h] = [-h, w];\n break;\n }\n\n return [\n node.x + x + Math.min(0, w),\n node.y + y + Math.min(0, h),\n Math.abs(w),\n Math.abs(h),\n ];\n}\n\n/**\n * Returning true means that the node will be layed out\n * else the layout will go to its next step (changing of line\n * in case of lr-tb or changing content area...).\n */\nfunction checkDimensions(node, space) {\n if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\n return true;\n }\n\n if (node.w === 0 || node.h === 0) {\n return true;\n }\n\n const ERROR = 2;\n const parent = node[$getSubformParent]();\n const attempt = (parent[$extra] && parent[$extra].attempt) || 0;\n\n const [, y, w, h] = getTransformedBBox(node);\n switch (parent.layout) {\n case \"lr-tb\":\n case \"rl-tb\":\n if (attempt === 0) {\n // Try to put an element in the line.\n\n if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n // Not enough height.\n return false;\n }\n\n if (node.w !== \"\") {\n if (Math.round(w - space.width) <= ERROR) {\n return true;\n }\n if (parent[$extra].numberInLine === 0) {\n return space.height > ERROR;\n }\n\n return false;\n }\n\n return space.width > ERROR;\n }\n\n // No layout failure.\n\n // Put the element on the line but we can fail\n // and then in the second step (next line) we'll accept.\n if (node.w !== \"\") {\n return Math.round(w - space.width) <= ERROR;\n }\n\n return space.width > ERROR;\n }\n\n // Second attempt: try to put the element on the next line.\n\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n // We cannot fail.\n return true;\n }\n\n if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n return false;\n }\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"table\":\n case \"tb\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n // If the node has a height then check if it's fine with available height.\n // If the node is breakable then we can return true.\n if (node.h !== \"\" && !node[$isSplittable]()) {\n return Math.round(h - space.height) <= ERROR;\n }\n // Else wait and see: this node will be layed out itself\n // in the provided space and maybe a children won't fit.\n\n if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n return space.height > ERROR;\n }\n\n if (parent[$isThereMoreWidth]()) {\n return false;\n }\n\n return space.height > ERROR;\n case \"position\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n return true;\n }\n\n const area = node[$getTemplateRoot]()[$extra].currentContentArea;\n return h + y > area.h;\n case \"rl-row\":\n case \"row\":\n if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\n return true;\n }\n\n if (node.h !== \"\") {\n return Math.round(h - space.height) <= ERROR;\n }\n return true;\n default:\n // No layout, so accept everything.\n return true;\n }\n}\n\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $content,\n $extra,\n $getParent,\n $getSubformParent,\n $getTemplateRoot,\n $globalData,\n $nodeName,\n $pushGlyphs,\n $text,\n $toStyle,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { createValidAbsoluteUrl, warn } from \"../../shared/util.js\";\nimport { getMeasurement, stripQuotes } from \"./utils.js\";\nimport { selectFont } from \"./fonts.js\";\nimport { TextMeasure } from \"./text.js\";\n\nfunction measureToString(m) {\n if (typeof m === \"string\") {\n return \"0px\";\n }\n\n return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n anchorType(node, style) {\n const parent = node[$getSubformParent]();\n if (!parent || (parent.layout && parent.layout !== \"position\")) {\n // anchorType is only used in a positioned layout.\n return;\n }\n\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n switch (node.anchorType) {\n case \"bottomCenter\":\n style.transform += \"translate(-50%, -100%)\";\n break;\n case \"bottomLeft\":\n style.transform += \"translate(0,-100%)\";\n break;\n case \"bottomRight\":\n style.transform += \"translate(-100%,-100%)\";\n break;\n case \"middleCenter\":\n style.transform += \"translate(-50%,-50%)\";\n break;\n case \"middleLeft\":\n style.transform += \"translate(0,-50%)\";\n break;\n case \"middleRight\":\n style.transform += \"translate(-100%,-50%)\";\n break;\n case \"topCenter\":\n style.transform += \"translate(-50%,0)\";\n break;\n case \"topRight\":\n style.transform += \"translate(-100%,0)\";\n break;\n }\n },\n dimensions(node, style) {\n const parent = node[$getSubformParent]();\n let width = node.w;\n const height = node.h;\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let w;\n if (colSpan === -1) {\n w = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn = 0;\n } else {\n w = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, x) => a + x, 0);\n extra.currentColumn =\n (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n }\n\n if (!isNaN(w)) {\n width = node.w = w;\n }\n }\n\n if (width !== \"\") {\n style.width = measureToString(width);\n } else {\n style.width = \"auto\";\n }\n\n if (height !== \"\") {\n style.height = measureToString(height);\n } else {\n style.height = \"auto\";\n }\n },\n position(node, style) {\n const parent = node[$getSubformParent]();\n if (parent && parent.layout && parent.layout !== \"position\") {\n // IRL, we've some x/y in tb layout.\n // Specs say x/y is only used in positioned layout.\n return;\n }\n\n style.position = \"absolute\";\n style.left = measureToString(node.x);\n style.top = measureToString(node.y);\n },\n rotate(node, style) {\n if (node.rotate) {\n if (!(\"transform\" in style)) {\n style.transform = \"\";\n }\n style.transform += `rotate(-${node.rotate}deg)`;\n style.transformOrigin = \"top left\";\n }\n },\n presence(node, style) {\n switch (node.presence) {\n case \"invisible\":\n style.visibility = \"hidden\";\n break;\n case \"hidden\":\n case \"inactive\":\n style.display = \"none\";\n break;\n }\n },\n hAlign(node, style) {\n if (node[$nodeName] === \"para\") {\n switch (node.hAlign) {\n case \"justifyAll\":\n style.textAlign = \"justify-all\";\n break;\n case \"radix\":\n // TODO: implement this correctly !\n style.textAlign = \"left\";\n break;\n default:\n style.textAlign = node.hAlign;\n }\n } else {\n switch (node.hAlign) {\n case \"left\":\n style.alignSelf = \"start\";\n break;\n case \"center\":\n style.alignSelf = \"center\";\n break;\n case \"right\":\n style.alignSelf = \"end\";\n break;\n }\n }\n },\n margin(node, style) {\n if (node.margin) {\n style.margin = node.margin[$toStyle]().margin;\n }\n },\n};\n\nfunction setMinMaxDimensions(node, style) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\") {\n if (node.minW > 0) {\n style.minWidth = measureToString(node.minW);\n }\n if (node.maxW > 0) {\n style.maxWidth = measureToString(node.maxW);\n }\n if (node.minH > 0) {\n style.minHeight = measureToString(node.minH);\n }\n if (node.maxH > 0) {\n style.maxHeight = measureToString(node.maxH);\n }\n }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n if (typeof text === \"string\") {\n measure.addString(text);\n } else {\n text[$pushGlyphs](measure);\n }\n\n return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n let height = null;\n let width = null;\n let isBroken = false;\n\n if ((!node.w || !node.h) && node.value) {\n let marginH = 0;\n let marginV = 0;\n if (node.margin) {\n marginH = node.margin.leftInset + node.margin.rightInset;\n marginV = node.margin.topInset + node.margin.bottomInset;\n }\n\n let lineHeight = null;\n let margin = null;\n if (node.para) {\n margin = Object.create(null);\n lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n }\n\n let font = node.font;\n if (!font) {\n const root = node[$getTemplateRoot]();\n let parent = node[$getParent]();\n while (parent && parent !== root) {\n if (parent.font) {\n font = parent.font;\n break;\n }\n parent = parent[$getParent]();\n }\n }\n\n const maxWidth = (node.w || availableSpace.width) - marginH;\n const fontFinder = node[$globalData].fontFinder;\n if (\n node.value.exData &&\n node.value.exData[$content] &&\n node.value.exData.contentType === \"text/html\"\n ) {\n const res = layoutText(\n node.value.exData[$content],\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n } else {\n const text = node.value[$text]();\n if (text) {\n const res = layoutText(\n text,\n font,\n margin,\n lineHeight,\n fontFinder,\n maxWidth\n );\n width = res.width;\n height = res.height;\n isBroken = res.isBroken;\n }\n }\n\n if (width !== null && !node.w) {\n width += marginH;\n }\n\n if (height !== null && !node.h) {\n height += marginV;\n }\n }\n return { w: width, h: height, isBroken };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n let bbox;\n if (node.w !== \"\" && node.h !== \"\") {\n bbox = [node.x, node.y, node.w, node.h];\n } else {\n if (!availableSpace) {\n return null;\n }\n let width = node.w;\n if (width === \"\") {\n if (node.maxW === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.w !== \"\") {\n width = 0;\n } else {\n width = node.minW;\n }\n } else {\n width = Math.min(node.maxW, availableSpace.width);\n }\n html.attributes.style.width = measureToString(width);\n }\n\n let height = node.h;\n if (height === \"\") {\n if (node.maxH === 0) {\n const parent = node[$getSubformParent]();\n if (parent.layout === \"position\" && parent.h !== \"\") {\n height = 0;\n } else {\n height = node.minH;\n }\n } else {\n height = Math.min(node.maxH, availableSpace.height);\n }\n html.attributes.style.height = measureToString(height);\n }\n\n bbox = [node.x, node.y, width, height];\n }\n return bbox;\n}\n\nfunction fixDimensions(node) {\n const parent = node[$getSubformParent]();\n if (parent.layout && parent.layout.includes(\"row\")) {\n const extra = parent[$extra];\n const colSpan = node.colSpan;\n let width;\n if (colSpan === -1) {\n width = extra.columnWidths\n .slice(extra.currentColumn)\n .reduce((a, w) => a + w, 0);\n } else {\n width = extra.columnWidths\n .slice(extra.currentColumn, extra.currentColumn + colSpan)\n .reduce((a, w) => a + w, 0);\n }\n if (!isNaN(width)) {\n node.w = width;\n }\n }\n\n if (parent.layout && parent.layout !== \"position\") {\n // Useless in this context.\n node.x = node.y = 0;\n }\n\n if (node.layout === \"table\") {\n if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n }\n }\n}\n\nfunction layoutClass(node) {\n switch (node.layout) {\n case \"position\":\n return \"xfaPosition\";\n case \"lr-tb\":\n return \"xfaLrTb\";\n case \"rl-row\":\n return \"xfaRlRow\";\n case \"rl-tb\":\n return \"xfaRlTb\";\n case \"row\":\n return \"xfaRow\";\n case \"table\":\n return \"xfaTable\";\n case \"tb\":\n return \"xfaTb\";\n default:\n return \"xfaPosition\";\n }\n}\n\nfunction toStyle(node, ...names) {\n const style = Object.create(null);\n for (const name of names) {\n const value = node[name];\n if (value === null) {\n continue;\n }\n if (converters.hasOwnProperty(name)) {\n converters[name](node, style);\n continue;\n }\n\n if (value instanceof XFAObject) {\n const newStyle = value[$toStyle]();\n if (newStyle) {\n Object.assign(style, newStyle);\n } else {\n warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n }\n }\n }\n return style;\n}\n\nfunction createWrapper(node, html) {\n const { attributes } = html;\n const { style } = attributes;\n\n const wrapper = {\n name: \"div\",\n attributes: {\n class: [\"xfaWrapper\"],\n style: Object.create(null),\n },\n children: [],\n };\n\n attributes.class.push(\"xfaWrapped\");\n\n if (node.border) {\n const { widths, insets } = node.border[$extra];\n let width, height;\n let top = insets[0];\n let left = insets[3];\n const insetsH = insets[0] + insets[2];\n const insetsW = insets[1] + insets[3];\n switch (node.border.hand) {\n case \"even\":\n top -= widths[0] / 2;\n left -= widths[3] / 2;\n width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n break;\n case \"left\":\n top -= widths[0];\n left -= widths[3];\n width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n break;\n case \"right\":\n width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n break;\n }\n const classNames = [\"xfaBorder\"];\n if (isPrintOnly(node.border)) {\n classNames.push(\"xfaPrintOnly\");\n }\n\n const border = {\n name: \"div\",\n attributes: {\n class: classNames,\n style: {\n top: `${top}px`,\n left: `${left}px`,\n width,\n height,\n },\n },\n children: [],\n };\n\n for (const key of [\n \"border\",\n \"borderWidth\",\n \"borderColor\",\n \"borderRadius\",\n \"borderStyle\",\n ]) {\n if (style[key] !== undefined) {\n border.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n wrapper.children.push(border, html);\n } else {\n wrapper.children.push(html);\n }\n\n for (const key of [\n \"background\",\n \"backgroundClip\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"transform\",\n \"transformOrigin\",\n \"visibility\",\n ]) {\n if (style[key] !== undefined) {\n wrapper.attributes.style[key] = style[key];\n delete style[key];\n }\n }\n\n if (style.position === \"absolute\") {\n wrapper.attributes.style.position = \"absolute\";\n } else {\n wrapper.attributes.style.position = \"relative\";\n }\n delete style.position;\n\n if (style.alignSelf) {\n wrapper.attributes.style.alignSelf = style.alignSelf;\n delete style.alignSelf;\n }\n\n return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n const indent = getMeasurement(styles.textIndent, \"0px\");\n if (indent >= 0) {\n return;\n }\n\n // If indent is negative then it's a hanging indent.\n const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n const padding = getMeasurement(styles[name], \"0px\");\n styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n switch (node.access) {\n case \"nonInteractive\":\n classNames.push(\"xfaNonInteractive\");\n break;\n case \"readOnly\":\n classNames.push(\"xfaReadOnly\");\n break;\n case \"protected\":\n classNames.push(\"xfaDisabled\");\n break;\n }\n}\n\nfunction isPrintOnly(node) {\n return (\n node.relevant.length > 0 &&\n !node.relevant[0].excluded &&\n node.relevant[0].viewname === \"print\"\n );\n}\n\nfunction getCurrentPara(node) {\n const stack = node[$getTemplateRoot]()[$extra].paraStack;\n return stack.length ? stack.at(-1) : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n if (nodeStyle) {\n if (node.h === \"\") {\n nodeStyle.height = \"auto\";\n }\n if (node.w === \"\") {\n nodeStyle.width = \"auto\";\n }\n }\n\n const para = getCurrentPara(node);\n if (para) {\n // By definition exData are external data so para\n // has no effect on it.\n const valueStyle = value.attributes.style;\n valueStyle.display = \"flex\";\n valueStyle.flexDirection = \"column\";\n switch (para.vAlign) {\n case \"top\":\n valueStyle.justifyContent = \"start\";\n break;\n case \"bottom\":\n valueStyle.justifyContent = \"end\";\n break;\n case \"middle\":\n valueStyle.justifyContent = \"center\";\n break;\n }\n\n const paraStyle = para[$toStyle]();\n for (const [key, val] of Object.entries(paraStyle)) {\n if (!(key in valueStyle)) {\n valueStyle[key] = val;\n }\n }\n }\n }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n if (!fontFinder) {\n // The font cannot be found in the pdf so use the default one.\n delete style.fontFamily;\n return;\n }\n\n const name = stripQuotes(xfaFont.typeface);\n style.fontFamily = `\"${name}\"`;\n\n const typeface = fontFinder.find(name);\n if (typeface) {\n const { fontFamily } = typeface.regular.cssFontInfo;\n if (fontFamily !== name) {\n style.fontFamily = `\"${fontFamily}\"`;\n }\n\n const para = getCurrentPara(node);\n if (para && para.lineHeight !== \"\") {\n return;\n }\n\n if (style.lineHeight) {\n // Already something so don't overwrite.\n return;\n }\n\n const pdfFont = selectFont(xfaFont, typeface);\n if (pdfFont) {\n style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n }\n }\n}\n\nfunction fixURL(str) {\n const absoluteUrl = createValidAbsoluteUrl(str, /* baseUrl = */ null, {\n addDefaultProtocol: true,\n tryConvertEncoding: true,\n });\n return absoluteUrl ? absoluteUrl.href : null;\n}\n\nexport {\n computeBbox,\n createWrapper,\n fixDimensions,\n fixTextIndent,\n fixURL,\n isPrintOnly,\n layoutClass,\n layoutNode,\n measureToString,\n setAccess,\n setFontFamily,\n setMinMaxDimensions,\n setPara,\n toStyle,\n};\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $globalData } from \"./xfa_object.js\";\nimport { stripQuotes } from \"./utils.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass FontFinder {\n constructor(pdfFonts) {\n this.fonts = new Map();\n this.cache = new Map();\n this.warned = new Set();\n this.defaultFont = null;\n this.add(pdfFonts);\n }\n\n add(pdfFonts, reallyMissingFonts = null) {\n for (const pdfFont of pdfFonts) {\n this.addPdfFont(pdfFont);\n }\n for (const pdfFont of this.fonts.values()) {\n if (!pdfFont.regular) {\n pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n }\n }\n\n if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n return;\n }\n const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n for (const missing of reallyMissingFonts) {\n this.fonts.set(missing, myriad);\n }\n }\n\n addPdfFont(pdfFont) {\n const cssFontInfo = pdfFont.cssFontInfo;\n const name = cssFontInfo.fontFamily;\n let font = this.fonts.get(name);\n if (!font) {\n font = Object.create(null);\n this.fonts.set(name, font);\n if (!this.defaultFont) {\n this.defaultFont = font;\n }\n }\n let property = \"\";\n const fontWeight = parseFloat(cssFontInfo.fontWeight);\n if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n } else if (fontWeight >= 700) {\n property = \"bold\";\n }\n\n if (!property) {\n if (\n pdfFont.name.includes(\"Bold\") ||\n (pdfFont.psName && pdfFont.psName.includes(\"Bold\"))\n ) {\n property = \"bold\";\n }\n if (\n pdfFont.name.includes(\"Italic\") ||\n pdfFont.name.endsWith(\"It\") ||\n (pdfFont.psName &&\n (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\")))\n ) {\n property += \"italic\";\n }\n }\n\n if (!property) {\n property = \"regular\";\n }\n\n font[property] = pdfFont;\n }\n\n getDefault() {\n return this.defaultFont;\n }\n\n find(fontName, mustWarn = true) {\n let font = this.fonts.get(fontName) || this.cache.get(fontName);\n if (font) {\n return font;\n }\n\n const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n let name = fontName.replace(pattern, \"\");\n font = this.fonts.get(name);\n if (font) {\n this.cache.set(fontName, font);\n return font;\n }\n name = name.toLowerCase();\n\n const maybe = [];\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n\n if (maybe.length === 0) {\n for (const [, pdfFont] of this.fonts.entries()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n name = name.replace(/psmt|mt/gi, \"\");\n for (const [family, pdfFont] of this.fonts.entries()) {\n if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length === 0) {\n for (const pdfFont of this.fonts.values()) {\n if (\n pdfFont.regular.name &&\n pdfFont.regular.name\n .replace(pattern, \"\")\n .toLowerCase()\n .startsWith(name)\n ) {\n maybe.push(pdfFont);\n }\n }\n }\n\n if (maybe.length >= 1) {\n if (maybe.length !== 1 && mustWarn) {\n warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\n }\n this.cache.set(fontName, maybe[0]);\n return maybe[0];\n }\n\n if (mustWarn && !this.warned.has(fontName)) {\n this.warned.add(fontName);\n warn(`XFA - Cannot find the font: ${fontName}`);\n }\n return null;\n }\n}\n\nfunction selectFont(xfaFont, typeface) {\n if (xfaFont.posture === \"italic\") {\n if (xfaFont.weight === \"bold\") {\n return typeface.bolditalic;\n }\n return typeface.italic;\n } else if (xfaFont.weight === \"bold\") {\n return typeface.bold;\n }\n\n return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n let pdfFont = null;\n if (xfaFont) {\n const name = stripQuotes(xfaFont.typeface);\n const typeface = xfaFont[$globalData].fontFinder.find(name);\n pdfFont = selectFont(xfaFont, typeface);\n }\n\n if (!pdfFont) {\n return {\n lineHeight: 12,\n lineGap: 2,\n lineNoGap: 10,\n };\n }\n\n const size = xfaFont.size || 10;\n const lineHeight = pdfFont.lineHeight\n ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\n : 1.2;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n return {\n lineHeight: lineHeight * size,\n lineGap: lineGap * size,\n lineNoGap: Math.max(1, lineHeight - lineGap) * size,\n };\n}\n\nexport { FontFinder, getMetrics, selectFont };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { selectFont } from \"./fonts.js\";\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n constructor(xfaFont, margin, lineHeight, fontFinder) {\n this.lineHeight = lineHeight;\n this.paraMargin = margin || {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n\n if (!xfaFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.xfaFont = {\n typeface: xfaFont.typeface,\n posture: xfaFont.posture,\n weight: xfaFont.weight,\n size: xfaFont.size,\n letterSpacing: xfaFont.letterSpacing,\n };\n const typeface = fontFinder.find(xfaFont.typeface);\n if (!typeface) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n return;\n }\n\n this.pdfFont = selectFont(xfaFont, typeface);\n\n if (!this.pdfFont) {\n [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n }\n }\n\n defaultFont(fontFinder) {\n // TODO: Add a default font based on Liberation.\n const font =\n fontFinder.find(\"Helvetica\", false) ||\n fontFinder.find(\"Myriad Pro\", false) ||\n fontFinder.find(\"Arial\", false) ||\n fontFinder.getDefault();\n if (font && font.regular) {\n const pdfFont = font.regular;\n const info = pdfFont.cssFontInfo;\n const xfaFont = {\n typeface: info.fontFamily,\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [pdfFont, xfaFont];\n }\n\n const xfaFont = {\n typeface: \"Courier\",\n posture: \"normal\",\n weight: \"normal\",\n size: 10,\n letterSpacing: 0,\n };\n return [null, xfaFont];\n }\n}\n\nclass FontSelector {\n constructor(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ) {\n this.fontFinder = fontFinder;\n this.stack = [\n new FontInfo(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fontFinder\n ),\n ];\n }\n\n pushData(xfaFont, margin, lineHeight) {\n const lastFont = this.stack.at(-1);\n for (const name of [\n \"typeface\",\n \"posture\",\n \"weight\",\n \"size\",\n \"letterSpacing\",\n ]) {\n if (!xfaFont[name]) {\n xfaFont[name] = lastFont.xfaFont[name];\n }\n }\n\n for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n if (isNaN(margin[name])) {\n margin[name] = lastFont.paraMargin[name];\n }\n }\n\n const fontInfo = new FontInfo(\n xfaFont,\n margin,\n lineHeight || lastFont.lineHeight,\n this.fontFinder\n );\n if (!fontInfo.pdfFont) {\n fontInfo.pdfFont = lastFont.pdfFont;\n }\n\n this.stack.push(fontInfo);\n }\n\n popFont() {\n this.stack.pop();\n }\n\n topFont() {\n return this.stack.at(-1);\n }\n}\n\n/**\n * Compute a text area dimensions based on font metrics.\n */\nclass TextMeasure {\n constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n this.glyphs = [];\n this.fontSelector = new FontSelector(\n defaultXfaFont,\n defaultParaMargin,\n defaultLineHeight,\n fonts\n );\n this.extraHeight = 0;\n }\n\n pushData(xfaFont, margin, lineHeight) {\n this.fontSelector.pushData(xfaFont, margin, lineHeight);\n }\n\n popFont(xfaFont) {\n return this.fontSelector.popFont();\n }\n\n addPara() {\n const lastFont = this.fontSelector.topFont();\n this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n }\n\n addString(str) {\n if (!str) {\n return;\n }\n\n const lastFont = this.fontSelector.topFont();\n const fontSize = lastFont.xfaFont.size;\n if (lastFont.pdfFont) {\n const letterSpacing = lastFont.xfaFont.letterSpacing;\n const pdfFont = lastFont.pdfFont;\n const fontLineHeight = pdfFont.lineHeight || 1.2;\n const lineHeight =\n lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n const noGap = fontLineHeight - lineGap;\n const firstLineHeight = Math.max(1, noGap) * fontSize;\n const scale = fontSize / 1000;\n const fallbackWidth =\n pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n for (const line of str.split(/[\\u2029\\n]/)) {\n const encodedLine = pdfFont.encodeString(line).join(\"\");\n const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n for (const glyph of glyphs) {\n const width = glyph.width || fallbackWidth;\n this.glyphs.push([\n width * scale + letterSpacing,\n lineHeight,\n firstLineHeight,\n glyph.unicode,\n false,\n ]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n return;\n }\n\n // When we have no font in the pdf, just use the font size as default width.\n for (const line of str.split(/[\\u2029\\n]/)) {\n for (const char of line.split(\"\")) {\n this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n }\n\n this.glyphs.push([0, 0, 0, \"\\n\", true]);\n }\n this.glyphs.pop();\n }\n\n compute(maxWidth) {\n let lastSpacePos = -1,\n lastSpaceWidth = 0,\n width = 0,\n height = 0,\n currentLineWidth = 0,\n currentLineHeight = 0;\n let isBroken = false;\n let isFirstLine = true;\n\n for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\n this.glyphs[i];\n const isSpace = char === \" \";\n const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n if (isEOL) {\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isFirstLine = false;\n continue;\n }\n\n if (isSpace) {\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We can break here but the space is not taken into account.\n width = Math.max(width, currentLineWidth);\n currentLineWidth = 0;\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n isBroken = true;\n isFirstLine = false;\n } else {\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n lastSpaceWidth = currentLineWidth;\n currentLineWidth += glyphWidth;\n lastSpacePos = i;\n }\n continue;\n }\n\n if (currentLineWidth + glyphWidth > maxWidth) {\n // We must break to the last white position (if available)\n height += currentLineHeight;\n currentLineHeight = glyphHeight;\n if (lastSpacePos !== -1) {\n i = lastSpacePos;\n width = Math.max(width, lastSpaceWidth);\n currentLineWidth = 0;\n lastSpacePos = -1;\n lastSpaceWidth = 0;\n } else {\n // Just break in the middle of the word\n width = Math.max(width, currentLineWidth);\n currentLineWidth = glyphWidth;\n }\n isBroken = true;\n isFirstLine = false;\n\n continue;\n }\n\n currentLineWidth += glyphWidth;\n currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n }\n\n width = Math.max(width, currentLineWidth);\n height += currentLineHeight + this.extraHeight;\n\n return { width: WIDTH_FACTOR * width, height, isBroken };\n }\n}\n\nexport { TextMeasure };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $getAttributes,\n $getChildren,\n $nodeName,\n $setValue,\n $toString,\n $uid,\n} from \"./xfa_object.js\";\n\nclass DataHandler {\n constructor(root, data) {\n this.data = data;\n this.dataset = root.datasets || null;\n }\n\n serialize(storage) {\n const stack = [[-1, this.data[$getChildren]()]];\n\n while (stack.length > 0) {\n const last = stack.at(-1);\n const [i, children] = last;\n if (i + 1 === children.length) {\n stack.pop();\n continue;\n }\n\n const child = children[++last[0]];\n const storageEntry = storage.get(child[$uid]);\n if (storageEntry) {\n child[$setValue](storageEntry);\n } else {\n const attributes = child[$getAttributes]();\n for (const value of attributes.values()) {\n const entry = storage.get(value[$uid]);\n if (entry) {\n value[$setValue](entry);\n break;\n }\n }\n }\n\n const nodes = child[$getChildren]();\n if (nodes.length > 0) {\n stack.push([-1, nodes]);\n }\n }\n\n const buf = [\n `<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`,\n ];\n if (this.dataset) {\n // Dump nodes other than data: they can contains for example\n // some data for choice lists.\n for (const child of this.dataset[$getChildren]()) {\n if (child[$nodeName] !== \"data\") {\n child[$toString](buf);\n }\n }\n }\n this.data[$toString](buf);\n buf.push(\"</xfa:datasets>\");\n\n return buf.join(\"\");\n }\n}\n\nexport { DataHandler };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $clean,\n $content,\n $finalize,\n $globalData,\n $isCDATAXml,\n $nsAttributes,\n $onChild,\n $onText,\n $setId,\n} from \"./xfa_object.js\";\nimport { XMLParserBase, XMLParserErrorCode } from \"../xml_parser.js\";\nimport { Builder } from \"./builder.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass XFAParser extends XMLParserBase {\n constructor(rootNameSpace = null, richText = false) {\n super();\n this._builder = new Builder(rootNameSpace);\n this._stack = [];\n this._globalData = {\n usedTypefaces: new Set(),\n };\n this._ids = new Map();\n this._current = this._builder.buildRoot(this._ids);\n this._errorCode = XMLParserErrorCode.NoError;\n this._whiteRegex = /^\\s+$/;\n this._nbsps = /\\xa0+/g;\n this._richText = richText;\n }\n\n parse(data) {\n this.parseXml(data);\n\n if (this._errorCode !== XMLParserErrorCode.NoError) {\n return undefined;\n }\n\n this._current[$finalize]();\n\n return this._current.element;\n }\n\n onText(text) {\n // Normally by definition a   is unbreakable\n // but in real life Acrobat can break strings on  .\n text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n if (this._richText || this._current[$acceptWhitespace]()) {\n this._current[$onText](text, this._richText);\n return;\n }\n\n if (this._whiteRegex.test(text)) {\n return;\n }\n this._current[$onText](text.trim());\n }\n\n onCdata(text) {\n this._current[$onText](text);\n }\n\n _mkAttributes(attributes, tagName) {\n // Transform attributes into an object and get out\n // namespaces information.\n let namespace = null;\n let prefixes = null;\n const attributeObj = Object.create({});\n for (const { name, value } of attributes) {\n if (name === \"xmlns\") {\n if (!namespace) {\n namespace = value;\n } else {\n warn(`XFA - multiple namespace definition in <${tagName}>`);\n }\n } else if (name.startsWith(\"xmlns:\")) {\n const prefix = name.substring(\"xmlns:\".length);\n if (!prefixes) {\n prefixes = [];\n }\n prefixes.push({ prefix, value });\n } else {\n const i = name.indexOf(\":\");\n if (i === -1) {\n attributeObj[name] = value;\n } else {\n // Attributes can have their own namespace.\n // For example in data, we can have <foo xfa:dataNode=\"dataGroup\"/>\n let nsAttrs = attributeObj[$nsAttributes];\n if (!nsAttrs) {\n nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n }\n const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n let attrs = nsAttrs[ns];\n if (!attrs) {\n attrs = nsAttrs[ns] = Object.create(null);\n }\n attrs[attrName] = value;\n }\n }\n }\n\n return [namespace, prefixes, attributeObj];\n }\n\n _getNameAndPrefix(name, nsAgnostic) {\n const i = name.indexOf(\":\");\n if (i === -1) {\n return [name, null];\n }\n return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n }\n\n onBeginElement(tagName, attributes, isEmpty) {\n const [namespace, prefixes, attributesObj] = this._mkAttributes(\n attributes,\n tagName\n );\n const [name, nsPrefix] = this._getNameAndPrefix(\n tagName,\n this._builder.isNsAgnostic()\n );\n const node = this._builder.build({\n nsPrefix,\n name,\n attributes: attributesObj,\n namespace,\n prefixes,\n });\n node[$globalData] = this._globalData;\n\n if (isEmpty) {\n // No children: just push the node into its parent.\n node[$finalize]();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n return;\n }\n\n this._stack.push(this._current);\n this._current = node;\n }\n\n onEndElement(name) {\n const node = this._current;\n if (node[$isCDATAXml]() && typeof node[$content] === \"string\") {\n const parser = new XFAParser();\n parser._globalData = this._globalData;\n const root = parser.parse(node[$content]);\n node[$content] = null;\n node[$onChild](root);\n }\n\n node[$finalize]();\n this._current = this._stack.pop();\n if (this._current[$onChild](node)) {\n node[$setId](this._ids);\n }\n node[$clean](this._builder);\n }\n\n onError(code) {\n this._errorCode = code;\n }\n}\n\nexport { XFAParser };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $cleanup,\n $finalize,\n $ids,\n $isNsAgnostic,\n $nsAttributes,\n $onChild,\n $resolvePrototypes,\n $root,\n XFAObject,\n} from \"./xfa_object.js\";\nimport { NamespaceSetUp } from \"./setup.js\";\nimport { Template } from \"./template.js\";\nimport { UnknownNamespace } from \"./unknown.js\";\nimport { warn } from \"../../shared/util.js\";\n\nclass Root extends XFAObject {\n constructor(ids) {\n super(-1, \"root\", Object.create(null));\n this.element = null;\n this[$ids] = ids;\n }\n\n [$onChild](child) {\n this.element = child;\n return true;\n }\n\n [$finalize]() {\n super[$finalize]();\n if (this.element.template instanceof Template) {\n // Set the root element in $ids using a symbol in order\n // to avoid conflict with real IDs.\n this[$ids].set($root, this.element);\n\n this.element.template[$resolvePrototypes](this[$ids]);\n this.element.template[$ids] = this[$ids];\n }\n }\n}\n\nclass Empty extends XFAObject {\n constructor() {\n super(-1, \"\", Object.create(null));\n }\n\n [$onChild](_) {\n return false;\n }\n}\n\nclass Builder {\n constructor(rootNameSpace = null) {\n this._namespaceStack = [];\n this._nsAgnosticLevel = 0;\n\n // Each prefix has its own stack\n this._namespacePrefixes = new Map();\n this._namespaces = new Map();\n this._nextNsId = Math.max(\n ...Object.values(NamespaceIds).map(({ id }) => id)\n );\n this._currentNamespace =\n rootNameSpace || new UnknownNamespace(++this._nextNsId);\n }\n\n buildRoot(ids) {\n return new Root(ids);\n }\n\n build({ nsPrefix, name, attributes, namespace, prefixes }) {\n const hasNamespaceDef = namespace !== null;\n if (hasNamespaceDef) {\n // Define the current namespace to use.\n this._namespaceStack.push(this._currentNamespace);\n this._currentNamespace = this._searchNamespace(namespace);\n }\n\n if (prefixes) {\n // The xml node may have namespace prefix definitions\n this._addNamespacePrefix(prefixes);\n }\n\n if (attributes.hasOwnProperty($nsAttributes)) {\n // Only support xfa-data namespace.\n const dataTemplate = NamespaceSetUp.datasets;\n const nsAttrs = attributes[$nsAttributes];\n let xfaAttrs = null;\n for (const [ns, attrs] of Object.entries(nsAttrs)) {\n const nsToUse = this._getNamespaceToUse(ns);\n if (nsToUse === dataTemplate) {\n xfaAttrs = { xfa: attrs };\n break;\n }\n }\n if (xfaAttrs) {\n attributes[$nsAttributes] = xfaAttrs;\n } else {\n delete attributes[$nsAttributes];\n }\n }\n\n const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n const node =\n (namespaceToUse && namespaceToUse[$buildXFAObject](name, attributes)) ||\n new Empty();\n\n if (node[$isNsAgnostic]()) {\n this._nsAgnosticLevel++;\n }\n\n // In case the node has some namespace things,\n // we must pop the different stacks.\n if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\n node[$cleanup] = {\n hasNamespace: hasNamespaceDef,\n prefixes,\n nsAgnostic: node[$isNsAgnostic](),\n };\n }\n\n return node;\n }\n\n isNsAgnostic() {\n return this._nsAgnosticLevel > 0;\n }\n\n _searchNamespace(nsName) {\n let ns = this._namespaces.get(nsName);\n if (ns) {\n return ns;\n }\n for (const [name, { check }] of Object.entries(NamespaceIds)) {\n if (check(nsName)) {\n ns = NamespaceSetUp[name];\n if (ns) {\n this._namespaces.set(nsName, ns);\n return ns;\n }\n // The namespace is known but not handled.\n break;\n }\n }\n\n ns = new UnknownNamespace(++this._nextNsId);\n this._namespaces.set(nsName, ns);\n return ns;\n }\n\n _addNamespacePrefix(prefixes) {\n for (const { prefix, value } of prefixes) {\n const namespace = this._searchNamespace(value);\n let prefixStack = this._namespacePrefixes.get(prefix);\n if (!prefixStack) {\n prefixStack = [];\n this._namespacePrefixes.set(prefix, prefixStack);\n }\n prefixStack.push(namespace);\n }\n }\n\n _getNamespaceToUse(prefix) {\n if (!prefix) {\n return this._currentNamespace;\n }\n const prefixStack = this._namespacePrefixes.get(prefix);\n if (prefixStack && prefixStack.length > 0) {\n return prefixStack.at(-1);\n }\n\n warn(`Unknown namespace prefix: ${prefix}.`);\n return null;\n }\n\n clean(data) {\n const { hasNamespace, prefixes, nsAgnostic } = data;\n if (hasNamespace) {\n this._currentNamespace = this._namespaceStack.pop();\n }\n if (prefixes) {\n prefixes.forEach(({ prefix }) => {\n this._namespacePrefixes.get(prefix).pop();\n });\n }\n if (nsAgnostic) {\n this._nsAgnosticLevel--;\n }\n }\n}\n\nexport { Builder };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigNamespace } from \"./config.js\";\nimport { ConnectionSetNamespace } from \"./connection_set.js\";\nimport { DatasetsNamespace } from \"./datasets.js\";\nimport { LocaleSetNamespace } from \"./locale_set.js\";\nimport { SignatureNamespace } from \"./signature.js\";\nimport { StylesheetNamespace } from \"./stylesheet.js\";\nimport { TemplateNamespace } from \"./template.js\";\nimport { XdpNamespace } from \"./xdp.js\";\nimport { XhtmlNamespace } from \"./xhtml.js\";\n\nconst NamespaceSetUp = {\n config: ConfigNamespace,\n connection: ConnectionSetNamespace,\n datasets: DatasetsNamespace,\n localeSet: LocaleSetNamespace,\n signature: SignatureNamespace,\n stylesheet: StylesheetNamespace,\n template: TemplateNamespace,\n xdp: XdpNamespace,\n xhtml: XhtmlNamespace,\n};\n\nexport { NamespaceSetUp };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $content,\n $finalize,\n ContentObject,\n IntegerObject,\n Option01,\n Option10,\n OptionObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\nimport { shadow, warn } from \"../../shared/util.js\";\n\nconst CONFIG_NS_ID = NamespaceIds.config.id;\n\nclass Acrobat extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat\", /* hasChildren = */ true);\n this.acrobat7 = null;\n this.autoSave = null;\n this.common = null;\n this.validate = null;\n this.validateApprovalSignatures = null;\n this.submitUrl = new XFAObjectArray();\n }\n}\n\nclass Acrobat7 extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"acrobat7\", /* hasChildren = */ true);\n this.dynamicRender = null;\n }\n}\n\nclass ADBE_JSConsole extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass ADBE_JSDebugger extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n }\n}\n\nclass AddSilentPrint extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addSilentPrint\");\n }\n}\n\nclass AddViewerPreferences extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"addViewerPreferences\");\n }\n}\n\nclass AdjustData extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adjustData\");\n }\n}\n\nclass AdobeExtensionLevel extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n }\n}\n\nclass Agent extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"agent\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.common = new XFAObjectArray();\n }\n}\n\nclass AlwaysEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"alwaysEmbed\");\n }\n}\n\nclass Amd extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"amd\");\n }\n}\n\nclass Area extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"area\");\n this.level = getInteger({\n data: attributes.level,\n defaultValue: 0,\n validate: n => n >= 1 && n <= 3,\n });\n this.name = getStringOption(attributes.name, [\n \"\",\n \"barcode\",\n \"coreinit\",\n \"deviceDriver\",\n \"font\",\n \"general\",\n \"layout\",\n \"merge\",\n \"script\",\n \"signature\",\n \"sourceSet\",\n \"templateCache\",\n ]);\n }\n}\n\nclass Attributes extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n }\n}\n\nclass AutoSave extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n }\n}\n\nclass Base extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"base\");\n }\n}\n\nclass BatchOutput extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"batchOutput\");\n this.format = getStringOption(attributes.format, [\n \"none\",\n \"concat\",\n \"zip\",\n \"zipCompress\",\n ]);\n }\n}\n\nclass BehaviorOverride extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"behaviorOverride\");\n }\n\n [$finalize]() {\n this[$content] = new Map(\n this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => x.includes(\":\"))\n .map(x => x.split(\":\", 2))\n );\n }\n}\n\nclass Cache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"cache\", /* hasChildren = */ true);\n this.templateCache = null;\n }\n}\n\nclass Change extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"change\");\n }\n}\n\nclass Common extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"common\", /* hasChildren = */ true);\n this.data = null;\n this.locale = null;\n this.localeSet = null;\n this.messaging = null;\n this.suppressBanner = null;\n this.template = null;\n this.validationMessaging = null;\n this.versionControl = null;\n this.log = new XFAObjectArray();\n }\n}\n\nclass Compress extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compress\");\n this.scope = getStringOption(attributes.scope, [\"imageOnly\", \"document\"]);\n }\n}\n\nclass CompressLogicalStructure extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressLogicalStructure\");\n }\n}\n\nclass CompressObjectStream extends Option10 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compressObjectStream\");\n }\n}\n\nclass Compression extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"compression\", /* hasChildren = */ true);\n this.compressLogicalStructure = null;\n this.compressObjectStream = null;\n this.level = null;\n this.type = null;\n }\n}\n\nclass Config extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"config\", /* hasChildren = */ true);\n this.acrobat = null;\n this.present = null;\n this.trace = null;\n this.agent = new XFAObjectArray();\n }\n}\n\nclass Conformance extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n }\n}\n\nclass ContentCopy extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"contentCopy\");\n }\n}\n\nclass Copies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n }\n}\n\nclass Creator extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"creator\");\n }\n}\n\nclass CurrentPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n }\n}\n\nclass Data extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"data\", /* hasChildren = */ true);\n this.adjustData = null;\n this.attributes = null;\n this.incrementalLoad = null;\n this.outputXSL = null;\n this.range = null;\n this.record = null;\n this.startNode = null;\n this.uri = null;\n this.window = null;\n this.xsl = null;\n this.excludeNS = new XFAObjectArray();\n this.transform = new XFAObjectArray();\n }\n}\n\nclass Debug extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"debug\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass DefaultTypeface extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"defaultTypeface\");\n this.writingScript = getStringOption(attributes.writingScript, [\n \"*\",\n \"Arabic\",\n \"Cyrillic\",\n \"EastEuropeanRoman\",\n \"Greek\",\n \"Hebrew\",\n \"Japanese\",\n \"Korean\",\n \"Roman\",\n \"SimplifiedChinese\",\n \"Thai\",\n \"TraditionalChinese\",\n \"Vietnamese\",\n ]);\n }\n}\n\nclass Destination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"destination\", [\n \"pdf\",\n \"pcl\",\n \"ps\",\n \"webClient\",\n \"zpl\",\n ]);\n }\n}\n\nclass DocumentAssembly extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"documentAssembly\");\n }\n}\n\nclass Driver extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"driver\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass DuplexOption extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"duplexOption\", [\n \"simplex\",\n \"duplexFlipLongEdge\",\n \"duplexFlipShortEdge\",\n ]);\n }\n}\n\nclass DynamicRender extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n }\n}\n\nclass Embed extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"embed\");\n }\n}\n\nclass Encrypt extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encrypt\");\n }\n}\n\nclass Encryption extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryption\", /* hasChildren = */ true);\n this.encrypt = null;\n this.encryptionLevel = null;\n this.permissions = null;\n }\n}\n\nclass EncryptionLevel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n }\n}\n\nclass Enforce extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"enforce\");\n }\n}\n\nclass Equate extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equate\");\n\n this.force = getInteger({\n data: attributes.force,\n defaultValue: 1,\n validate: n => n === 0,\n });\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n }\n}\n\nclass EquateRange extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"equateRange\");\n\n this.from = attributes.from || \"\";\n this.to = attributes.to || \"\";\n this._unicodeRange = attributes.unicodeRange || \"\";\n }\n\n get unicodeRange() {\n const ranges = [];\n const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n const unicodeRange = this._unicodeRange;\n for (let range of unicodeRange\n .split(\",\")\n .map(x => x.trim())\n .filter(x => !!x)) {\n range = range.split(\"-\", 2).map(x => {\n const found = x.match(unicodeRegex);\n if (!found) {\n return 0;\n }\n return parseInt(found[1], 16);\n });\n if (range.length === 1) {\n range.push(range[0]);\n }\n ranges.push(range);\n }\n return shadow(this, \"unicodeRange\", ranges);\n }\n}\n\nclass Exclude extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"exclude\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(\n x =>\n x &&\n [\n \"calculate\",\n \"close\",\n \"enter\",\n \"exit\",\n \"initialize\",\n \"ready\",\n \"validate\",\n ].includes(x)\n );\n }\n}\n\nclass ExcludeNS extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"excludeNS\");\n }\n}\n\nclass FlipLabel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n }\n}\n\nclass FontInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"fontInfo\", /* hasChildren = */ true);\n this.embed = null;\n this.map = null;\n this.subsetBelow = null;\n this.alwaysEmbed = new XFAObjectArray();\n this.defaultTypeface = new XFAObjectArray();\n this.neverEmbed = new XFAObjectArray();\n }\n}\n\nclass FormFieldFilling extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"formFieldFilling\");\n }\n}\n\nclass GroupParent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"groupParent\");\n }\n}\n\nclass IfEmpty extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ifEmpty\", [\n \"dataValue\",\n \"dataGroup\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass IncludeXDPContent extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"includeXDPContent\");\n }\n}\n\nclass IncrementalLoad extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n }\n}\n\nclass IncrementalMerge extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"incrementalMerge\");\n }\n}\n\nclass Interactive extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"interactive\");\n }\n}\n\nclass Jog extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n }\n}\n\nclass LabelPrinter extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"labelPrinter\", /* hasChildren = */ true);\n this.name = getStringOption(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Layout extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n }\n}\n\nclass Level extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n }\n}\n\nclass Linearized extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"linearized\");\n }\n}\n\nclass Locale extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"locale\");\n }\n}\n\nclass LocaleSet extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"localeSet\");\n }\n}\n\nclass Log extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"log\", /* hasChildren = */ true);\n this.mode = null;\n this.threshold = null;\n this.to = null;\n this.uri = null;\n }\n}\n\n// Renamed in MapElement to avoid confusion with usual js Map.\nclass MapElement extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"map\", /* hasChildren = */ true);\n this.equate = new XFAObjectArray();\n this.equateRange = new XFAObjectArray();\n }\n}\n\nclass MediumInfo extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mediumInfo\", /* hasChildren = */ true);\n this.map = null;\n }\n}\n\nclass Message extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"message\", /* hasChildren = */ true);\n this.msgId = null;\n this.severity = null;\n }\n}\n\nclass Messaging extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"messaging\", /* hasChildren = */ true);\n this.message = new XFAObjectArray();\n }\n}\n\nclass Mode extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n }\n}\n\nclass ModifyAnnots extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"modifyAnnots\");\n }\n}\n\nclass MsgId extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n }\n}\n\nclass NameAttr extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"nameAttr\");\n }\n}\n\nclass NeverEmbed extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"neverEmbed\");\n }\n}\n\nclass NumberOfCopies extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n }\n}\n\nclass OpenAction extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"openAction\", /* hasChildren = */ true);\n this.destination = null;\n }\n}\n\nclass Output extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"output\", /* hasChildren = */ true);\n this.to = null;\n this.type = null;\n this.uri = null;\n }\n}\n\nclass OutputBin extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputBin\");\n }\n}\n\nclass OutputXSL extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"outputXSL\", /* hasChildren = */ true);\n this.uri = null;\n }\n}\n\nclass Overprint extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n }\n}\n\nclass Packets extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"packets\");\n }\n\n [$finalize]() {\n if (this[$content] === \"*\") {\n return;\n }\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x =>\n [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x)\n );\n }\n}\n\nclass PageOffset extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageOffset\");\n this.x = getInteger({\n data: attributes.x,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n this.y = getInteger({\n data: attributes.y,\n defaultValue: \"useXDCSetting\",\n validate: n => true,\n });\n }\n}\n\nclass PageRange extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pageRange\");\n }\n\n [$finalize]() {\n const numbers = this[$content]\n .trim()\n .split(/\\s+/)\n .map(x => parseInt(x, 10));\n const ranges = [];\n for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n ranges.push(numbers.slice(i, i + 2));\n }\n this[$content] = ranges;\n }\n}\n\nclass Pagination extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pagination\", [\n \"simplex\",\n \"duplexShortEdge\",\n \"duplexLongEdge\",\n ]);\n }\n}\n\nclass PaginationOverride extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"paginationOverride\", [\n \"none\",\n \"forceDuplex\",\n \"forceDuplexLongEdge\",\n \"forceDuplexShortEdge\",\n \"forceSimplex\",\n ]);\n }\n}\n\nclass Part extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"part\", 1, n => false);\n }\n}\n\nclass Pcl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pcl\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.pageOffset = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Pdf extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdf\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.adobeExtensionLevel = null;\n this.batchOutput = null;\n this.compression = null;\n this.creator = null;\n this.encryption = null;\n this.fontInfo = null;\n this.interactive = null;\n this.linearized = null;\n this.openAction = null;\n this.pdfa = null;\n this.producer = null;\n this.renderPolicy = null;\n this.scriptModel = null;\n this.silentPrint = null;\n this.submitFormat = null;\n this.tagged = null;\n this.version = null;\n this.viewerPreferences = null;\n this.xdc = null;\n }\n}\n\nclass Pdfa extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pdfa\", /* hasChildren = */ true);\n this.amd = null;\n this.conformance = null;\n this.includeXDPContent = null;\n this.part = null;\n }\n}\n\nclass Permissions extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"permissions\", /* hasChildren = */ true);\n this.accessibleContent = null;\n this.change = null;\n this.contentCopy = null;\n this.documentAssembly = null;\n this.formFieldFilling = null;\n this.modifyAnnots = null;\n this.plaintextMetadata = null;\n this.print = null;\n this.printHighQuality = null;\n }\n}\n\nclass PickTrayByPDFSize extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n }\n}\n\nclass Picture extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"picture\");\n }\n\n // TODO: check the validity of the picture clause.\n // See page 1150 in the spec.\n}\n\nclass PlaintextMetadata extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"plaintextMetadata\");\n }\n}\n\nclass Presence extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"presence\", [\n \"preserve\",\n \"dissolve\",\n \"dissolveStructure\",\n \"ignore\",\n \"remove\",\n ]);\n }\n}\n\nclass Present extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"present\", /* hasChildren = */ true);\n this.behaviorOverride = null;\n this.cache = null;\n this.common = null;\n this.copies = null;\n this.destination = null;\n this.incrementalMerge = null;\n this.layout = null;\n this.output = null;\n this.overprint = null;\n this.pagination = null;\n this.paginationOverride = null;\n this.script = null;\n this.validate = null;\n this.xdp = null;\n this.driver = new XFAObjectArray();\n this.labelPrinter = new XFAObjectArray();\n this.pcl = new XFAObjectArray();\n this.pdf = new XFAObjectArray();\n this.ps = new XFAObjectArray();\n this.submitUrl = new XFAObjectArray();\n this.webClient = new XFAObjectArray();\n this.zpl = new XFAObjectArray();\n }\n}\n\nclass Print extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"print\");\n }\n}\n\nclass PrintHighQuality extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printHighQuality\");\n }\n}\n\nclass PrintScaling extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n }\n}\n\nclass PrinterName extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"printerName\");\n }\n}\n\nclass Producer extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"producer\");\n }\n}\n\nclass Ps extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"ps\", /* hasChildren = */ true);\n this.name = attributes.name || \"\";\n this.batchOutput = null;\n this.fontInfo = null;\n this.jog = null;\n this.mediumInfo = null;\n this.outputBin = null;\n this.staple = null;\n this.xdc = null;\n }\n}\n\nclass Range extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"range\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10)))\n .filter(range => range.every(x => !isNaN(x)))\n .map(range => {\n if (range.length === 1) {\n range.push(range[0]);\n }\n return range;\n });\n }\n}\n\nclass Record extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"record\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n const n = parseInt(this[$content], 10);\n if (!isNaN(n) && n >= 0) {\n this[$content] = n;\n }\n }\n}\n\nclass Relevant extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"relevant\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim().split(/\\s+/);\n }\n}\n\nclass Rename extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"rename\");\n }\n\n [$finalize]() {\n this[$content] = this[$content].trim();\n // String must be a XFA name: same as XML one except that there\n // is no colon.\n if (\n this[$content].toLowerCase().startsWith(\"xml\") ||\n new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\").test(this[$content])\n ) {\n warn(\"XFA - Rename: invalid XFA name\");\n }\n }\n}\n\nclass RenderPolicy extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n }\n}\n\nclass RunScripts extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n }\n}\n\nclass Script extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"script\", /* hasChildren = */ true);\n this.currentPage = null;\n this.exclude = null;\n this.runScripts = null;\n }\n}\n\nclass ScriptModel extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n }\n}\n\nclass Severity extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"severity\", [\n \"ignore\",\n \"error\",\n \"information\",\n \"trace\",\n \"warning\",\n ]);\n }\n}\n\nclass SilentPrint extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"silentPrint\", /* hasChildren = */ true);\n this.addSilentPrint = null;\n this.printerName = null;\n }\n}\n\nclass Staple extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"staple\");\n this.mode = getStringOption(attributes.mode, [\n \"usePrinterSetting\",\n \"on\",\n \"off\",\n ]);\n }\n}\n\nclass StartNode extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startNode\");\n }\n}\n\nclass StartPage extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n }\n}\n\nclass SubmitFormat extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitFormat\", [\n \"html\",\n \"delegate\",\n \"fdf\",\n \"xml\",\n \"pdf\",\n ]);\n }\n}\n\nclass SubmitUrl extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"submitUrl\");\n }\n}\n\nclass SubsetBelow extends IntegerObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n }\n}\n\nclass SuppressBanner extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"suppressBanner\");\n }\n}\n\nclass Tagged extends Option01 {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"tagged\");\n }\n}\n\nclass Template extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"template\", /* hasChildren = */ true);\n this.base = null;\n this.relevant = null;\n this.startPage = null;\n this.uri = null;\n this.xsl = null;\n }\n}\n\nclass Threshold extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"threshold\", [\n \"trace\",\n \"error\",\n \"information\",\n \"warning\",\n ]);\n }\n}\n\nclass To extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"to\", [\n \"null\",\n \"memory\",\n \"stderr\",\n \"stdout\",\n \"system\",\n \"uri\",\n ]);\n }\n}\n\nclass TemplateCache extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"templateCache\");\n this.maxEntries = getInteger({\n data: attributes.maxEntries,\n defaultValue: 5,\n validate: n => n >= 0,\n });\n }\n}\n\nclass Trace extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"trace\", /* hasChildren = */ true);\n this.area = new XFAObjectArray();\n }\n}\n\nclass Transform extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"transform\", /* hasChildren = */ true);\n this.groupParent = null;\n this.ifEmpty = null;\n this.nameAttr = null;\n this.picture = null;\n this.presence = null;\n this.rename = null;\n this.whitespace = null;\n }\n}\n\nclass Type extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"type\", [\n \"none\",\n \"ascii85\",\n \"asciiHex\",\n \"ccittfax\",\n \"flate\",\n \"lzw\",\n \"runLength\",\n \"native\",\n \"xdp\",\n \"mergedXDP\",\n ]);\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"uri\");\n }\n}\n\nclass Validate extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validate\", [\n \"preSubmit\",\n \"prePrint\",\n \"preExecute\",\n \"preSave\",\n ]);\n }\n}\n\nclass ValidateApprovalSignatures extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n }\n\n [$finalize]() {\n this[$content] = this[$content]\n .trim()\n .split(/\\s+/)\n .filter(x => [\"docReady\", \"postSign\"].includes(x));\n }\n}\n\nclass ValidationMessaging extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"validationMessaging\", [\n \"allMessagesIndividually\",\n \"allMessagesTogether\",\n \"firstMessageOnly\",\n \"noMessages\",\n ]);\n }\n}\n\nclass Version extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n }\n}\n\nclass VersionControl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"VersionControl\");\n this.outputBelow = getStringOption(attributes.outputBelow, [\n \"warn\",\n \"error\",\n \"update\",\n ]);\n this.sourceAbove = getStringOption(attributes.sourceAbove, [\n \"warn\",\n \"error\",\n ]);\n this.sourceBelow = getStringOption(attributes.sourceBelow, [\n \"update\",\n \"maintain\",\n ]);\n }\n}\n\nclass ViewerPreferences extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"viewerPreferences\", /* hasChildren = */ true);\n this.ADBE_JSConsole = null;\n this.ADBE_JSDebugger = null;\n this.addViewerPreferences = null;\n this.duplexOption = null;\n this.enforce = null;\n this.numberOfCopies = null;\n this.pageRange = null;\n this.pickTrayByPDFSize = null;\n this.printScaling = null;\n }\n}\n\nclass WebClient extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"webClient\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass Whitespace extends OptionObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"whitespace\", [\n \"preserve\",\n \"ltrim\",\n \"normalize\",\n \"rtrim\",\n \"trim\",\n ]);\n }\n}\n\nclass Window extends ContentObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"window\");\n }\n\n [$finalize]() {\n const pair = this[$content]\n .trim()\n .split(/\\s*,\\s*/, 2)\n .map(x => parseInt(x, 10));\n if (pair.some(x => isNaN(x))) {\n this[$content] = [0, 0];\n return;\n }\n if (pair.length === 1) {\n pair.push(pair[0]);\n }\n this[$content] = pair;\n }\n}\n\nclass Xdc extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdc\", /* hasChildren = */ true);\n this.uri = new XFAObjectArray();\n this.xsl = new XFAObjectArray();\n }\n}\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.packets = null;\n }\n}\n\nclass Xsl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"xsl\", /* hasChildren = */ true);\n this.debug = null;\n this.uri = null;\n }\n}\n\nclass Zpl extends XFAObject {\n constructor(attributes) {\n super(CONFIG_NS_ID, \"zpl\", /* hasChildren = */ true);\n this.name = attributes.name ? attributes.name.trim() : \"\";\n this.batchOutput = null;\n this.flipLabel = null;\n this.fontInfo = null;\n this.xdc = null;\n }\n}\n\nclass ConfigNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConfigNamespace.hasOwnProperty(name)) {\n return ConfigNamespace[name](attributes);\n }\n return undefined;\n }\n\n static acrobat(attrs) {\n return new Acrobat(attrs);\n }\n\n static acrobat7(attrs) {\n return new Acrobat7(attrs);\n }\n\n static ADBE_JSConsole(attrs) {\n return new ADBE_JSConsole(attrs);\n }\n\n static ADBE_JSDebugger(attrs) {\n return new ADBE_JSDebugger(attrs);\n }\n\n static addSilentPrint(attrs) {\n return new AddSilentPrint(attrs);\n }\n\n static addViewerPreferences(attrs) {\n return new AddViewerPreferences(attrs);\n }\n\n static adjustData(attrs) {\n return new AdjustData(attrs);\n }\n\n static adobeExtensionLevel(attrs) {\n return new AdobeExtensionLevel(attrs);\n }\n\n static agent(attrs) {\n return new Agent(attrs);\n }\n\n static alwaysEmbed(attrs) {\n return new AlwaysEmbed(attrs);\n }\n\n static amd(attrs) {\n return new Amd(attrs);\n }\n\n static area(attrs) {\n return new Area(attrs);\n }\n\n static attributes(attrs) {\n return new Attributes(attrs);\n }\n\n static autoSave(attrs) {\n return new AutoSave(attrs);\n }\n\n static base(attrs) {\n return new Base(attrs);\n }\n\n static batchOutput(attrs) {\n return new BatchOutput(attrs);\n }\n\n static behaviorOverride(attrs) {\n return new BehaviorOverride(attrs);\n }\n\n static cache(attrs) {\n return new Cache(attrs);\n }\n\n static change(attrs) {\n return new Change(attrs);\n }\n\n static common(attrs) {\n return new Common(attrs);\n }\n\n static compress(attrs) {\n return new Compress(attrs);\n }\n\n static compressLogicalStructure(attrs) {\n return new CompressLogicalStructure(attrs);\n }\n\n static compressObjectStream(attrs) {\n return new CompressObjectStream(attrs);\n }\n\n static compression(attrs) {\n return new Compression(attrs);\n }\n\n static config(attrs) {\n return new Config(attrs);\n }\n\n static conformance(attrs) {\n return new Conformance(attrs);\n }\n\n static contentCopy(attrs) {\n return new ContentCopy(attrs);\n }\n\n static copies(attrs) {\n return new Copies(attrs);\n }\n\n static creator(attrs) {\n return new Creator(attrs);\n }\n\n static currentPage(attrs) {\n return new CurrentPage(attrs);\n }\n\n static data(attrs) {\n return new Data(attrs);\n }\n\n static debug(attrs) {\n return new Debug(attrs);\n }\n\n static defaultTypeface(attrs) {\n return new DefaultTypeface(attrs);\n }\n\n static destination(attrs) {\n return new Destination(attrs);\n }\n\n static documentAssembly(attrs) {\n return new DocumentAssembly(attrs);\n }\n\n static driver(attrs) {\n return new Driver(attrs);\n }\n\n static duplexOption(attrs) {\n return new DuplexOption(attrs);\n }\n\n static dynamicRender(attrs) {\n return new DynamicRender(attrs);\n }\n\n static embed(attrs) {\n return new Embed(attrs);\n }\n\n static encrypt(attrs) {\n return new Encrypt(attrs);\n }\n\n static encryption(attrs) {\n return new Encryption(attrs);\n }\n\n static encryptionLevel(attrs) {\n return new EncryptionLevel(attrs);\n }\n\n static enforce(attrs) {\n return new Enforce(attrs);\n }\n\n static equate(attrs) {\n return new Equate(attrs);\n }\n\n static equateRange(attrs) {\n return new EquateRange(attrs);\n }\n\n static exclude(attrs) {\n return new Exclude(attrs);\n }\n\n static excludeNS(attrs) {\n return new ExcludeNS(attrs);\n }\n\n static flipLabel(attrs) {\n return new FlipLabel(attrs);\n }\n\n static fontInfo(attrs) {\n return new FontInfo(attrs);\n }\n\n static formFieldFilling(attrs) {\n return new FormFieldFilling(attrs);\n }\n\n static groupParent(attrs) {\n return new GroupParent(attrs);\n }\n\n static ifEmpty(attrs) {\n return new IfEmpty(attrs);\n }\n\n static includeXDPContent(attrs) {\n return new IncludeXDPContent(attrs);\n }\n\n static incrementalLoad(attrs) {\n return new IncrementalLoad(attrs);\n }\n\n static incrementalMerge(attrs) {\n return new IncrementalMerge(attrs);\n }\n\n static interactive(attrs) {\n return new Interactive(attrs);\n }\n\n static jog(attrs) {\n return new Jog(attrs);\n }\n\n static labelPrinter(attrs) {\n return new LabelPrinter(attrs);\n }\n\n static layout(attrs) {\n return new Layout(attrs);\n }\n\n static level(attrs) {\n return new Level(attrs);\n }\n\n static linearized(attrs) {\n return new Linearized(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static log(attrs) {\n return new Log(attrs);\n }\n\n static map(attrs) {\n return new MapElement(attrs);\n }\n\n static mediumInfo(attrs) {\n return new MediumInfo(attrs);\n }\n\n static message(attrs) {\n return new Message(attrs);\n }\n\n static messaging(attrs) {\n return new Messaging(attrs);\n }\n\n static mode(attrs) {\n return new Mode(attrs);\n }\n\n static modifyAnnots(attrs) {\n return new ModifyAnnots(attrs);\n }\n\n static msgId(attrs) {\n return new MsgId(attrs);\n }\n\n static nameAttr(attrs) {\n return new NameAttr(attrs);\n }\n\n static neverEmbed(attrs) {\n return new NeverEmbed(attrs);\n }\n\n static numberOfCopies(attrs) {\n return new NumberOfCopies(attrs);\n }\n\n static openAction(attrs) {\n return new OpenAction(attrs);\n }\n\n static output(attrs) {\n return new Output(attrs);\n }\n\n static outputBin(attrs) {\n return new OutputBin(attrs);\n }\n\n static outputXSL(attrs) {\n return new OutputXSL(attrs);\n }\n\n static overprint(attrs) {\n return new Overprint(attrs);\n }\n\n static packets(attrs) {\n return new Packets(attrs);\n }\n\n static pageOffset(attrs) {\n return new PageOffset(attrs);\n }\n\n static pageRange(attrs) {\n return new PageRange(attrs);\n }\n\n static pagination(attrs) {\n return new Pagination(attrs);\n }\n\n static paginationOverride(attrs) {\n return new PaginationOverride(attrs);\n }\n\n static part(attrs) {\n return new Part(attrs);\n }\n\n static pcl(attrs) {\n return new Pcl(attrs);\n }\n\n static pdf(attrs) {\n return new Pdf(attrs);\n }\n\n static pdfa(attrs) {\n return new Pdfa(attrs);\n }\n\n static permissions(attrs) {\n return new Permissions(attrs);\n }\n\n static pickTrayByPDFSize(attrs) {\n return new PickTrayByPDFSize(attrs);\n }\n\n static picture(attrs) {\n return new Picture(attrs);\n }\n\n static plaintextMetadata(attrs) {\n return new PlaintextMetadata(attrs);\n }\n\n static presence(attrs) {\n return new Presence(attrs);\n }\n\n static present(attrs) {\n return new Present(attrs);\n }\n\n static print(attrs) {\n return new Print(attrs);\n }\n\n static printHighQuality(attrs) {\n return new PrintHighQuality(attrs);\n }\n\n static printScaling(attrs) {\n return new PrintScaling(attrs);\n }\n\n static printerName(attrs) {\n return new PrinterName(attrs);\n }\n\n static producer(attrs) {\n return new Producer(attrs);\n }\n\n static ps(attrs) {\n return new Ps(attrs);\n }\n\n static range(attrs) {\n return new Range(attrs);\n }\n\n static record(attrs) {\n return new Record(attrs);\n }\n\n static relevant(attrs) {\n return new Relevant(attrs);\n }\n\n static rename(attrs) {\n return new Rename(attrs);\n }\n\n static renderPolicy(attrs) {\n return new RenderPolicy(attrs);\n }\n\n static runScripts(attrs) {\n return new RunScripts(attrs);\n }\n\n static script(attrs) {\n return new Script(attrs);\n }\n\n static scriptModel(attrs) {\n return new ScriptModel(attrs);\n }\n\n static severity(attrs) {\n return new Severity(attrs);\n }\n\n static silentPrint(attrs) {\n return new SilentPrint(attrs);\n }\n\n static staple(attrs) {\n return new Staple(attrs);\n }\n\n static startNode(attrs) {\n return new StartNode(attrs);\n }\n\n static startPage(attrs) {\n return new StartPage(attrs);\n }\n\n static submitFormat(attrs) {\n return new SubmitFormat(attrs);\n }\n\n static submitUrl(attrs) {\n return new SubmitUrl(attrs);\n }\n\n static subsetBelow(attrs) {\n return new SubsetBelow(attrs);\n }\n\n static suppressBanner(attrs) {\n return new SuppressBanner(attrs);\n }\n\n static tagged(attrs) {\n return new Tagged(attrs);\n }\n\n static template(attrs) {\n return new Template(attrs);\n }\n\n static templateCache(attrs) {\n return new TemplateCache(attrs);\n }\n\n static threshold(attrs) {\n return new Threshold(attrs);\n }\n\n static to(attrs) {\n return new To(attrs);\n }\n\n static trace(attrs) {\n return new Trace(attrs);\n }\n\n static transform(attrs) {\n return new Transform(attrs);\n }\n\n static type(attrs) {\n return new Type(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static validate(attrs) {\n return new Validate(attrs);\n }\n\n static validateApprovalSignatures(attrs) {\n return new ValidateApprovalSignatures(attrs);\n }\n\n static validationMessaging(attrs) {\n return new ValidationMessaging(attrs);\n }\n\n static version(attrs) {\n return new Version(attrs);\n }\n\n static versionControl(attrs) {\n return new VersionControl(attrs);\n }\n\n static viewerPreferences(attrs) {\n return new ViewerPreferences(attrs);\n }\n\n static webClient(attrs) {\n return new WebClient(attrs);\n }\n\n static whitespace(attrs) {\n return new Whitespace(attrs);\n }\n\n static window(attrs) {\n return new Window(attrs);\n }\n\n static xdc(attrs) {\n return new Xdc(attrs);\n }\n\n static xdp(attrs) {\n return new Xdp(attrs);\n }\n\n static xsl(attrs) {\n return new Xsl(attrs);\n }\n\n static zpl(attrs) {\n return new Zpl(attrs);\n }\n}\n\nexport { ConfigNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { StringObject, XFAObject, XFAObjectArray } from \"./xfa_object.js\";\n\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"connectionSet\", /* hasChildren = */ true);\n this.wsdlConnection = new XFAObjectArray();\n this.xmlConnection = new XFAObjectArray();\n this.xsdConnection = new XFAObjectArray();\n }\n}\n\nclass EffectiveInputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass EffectiveOutputPolicy extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Operation extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"operation\");\n this.id = attributes.id || \"\";\n this.input = attributes.input || \"\";\n this.name = attributes.name || \"\";\n this.output = attributes.output || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass RootElement extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"rootElement\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAction extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAction\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass SoapAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"soapAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass Uri extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"uri\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlAddress extends StringObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n this.id = attributes.id || \"\";\n this.name = attributes.name || \"\";\n this.use = attributes.use || \"\";\n this.usehref = attributes.usehref || \"\";\n }\n}\n\nclass WsdlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"wsdlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.effectiveInputPolicy = null;\n this.effectiveOutputPolicy = null;\n this.operation = null;\n this.soapAction = null;\n this.soapAddress = null;\n this.wsdlAddress = null;\n }\n}\n\nclass XmlConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xmlConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.uri = null;\n }\n}\n\nclass XsdConnection extends XFAObject {\n constructor(attributes) {\n super(CONNECTION_SET_NS_ID, \"xsdConnection\", /* hasChildren = */ true);\n this.dataDescription = attributes.dataDescription || \"\";\n this.name = attributes.name || \"\";\n this.rootElement = null;\n this.uri = null;\n }\n}\n\nclass ConnectionSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (ConnectionSetNamespace.hasOwnProperty(name)) {\n return ConnectionSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static connectionSet(attrs) {\n return new ConnectionSet(attrs);\n }\n\n static effectiveInputPolicy(attrs) {\n return new EffectiveInputPolicy(attrs);\n }\n\n static effectiveOutputPolicy(attrs) {\n return new EffectiveOutputPolicy(attrs);\n }\n\n static operation(attrs) {\n return new Operation(attrs);\n }\n\n static rootElement(attrs) {\n return new RootElement(attrs);\n }\n\n static soapAction(attrs) {\n return new SoapAction(attrs);\n }\n\n static soapAddress(attrs) {\n return new SoapAddress(attrs);\n }\n\n static uri(attrs) {\n return new Uri(attrs);\n }\n\n static wsdlAddress(attrs) {\n return new WsdlAddress(attrs);\n }\n\n static wsdlConnection(attrs) {\n return new WsdlConnection(attrs);\n }\n\n static xmlConnection(attrs) {\n return new XmlConnection(attrs);\n }\n\n static xsdConnection(attrs) {\n return new XsdConnection(attrs);\n }\n}\n\nexport { ConnectionSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $appendChild,\n $isNsAgnostic,\n $namespaceId,\n $nodeName,\n $onChild,\n XFAObject,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\n\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\n\nclass Data extends XmlObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"data\", attributes);\n }\n\n [$isNsAgnostic]() {\n return true;\n }\n}\n\nclass Datasets extends XFAObject {\n constructor(attributes) {\n super(DATASETS_NS_ID, \"datasets\", /* hasChildren = */ true);\n this.data = null;\n this.Signature = null;\n }\n\n [$onChild](child) {\n const name = child[$nodeName];\n if (\n (name === \"data\" && child[$namespaceId] === DATASETS_NS_ID) ||\n (name === \"Signature\" &&\n child[$namespaceId] === NamespaceIds.signature.id)\n ) {\n this[name] = child;\n }\n this[$appendChild](child);\n }\n}\n\nclass DatasetsNamespace {\n static [$buildXFAObject](name, attributes) {\n if (DatasetsNamespace.hasOwnProperty(name)) {\n return DatasetsNamespace[name](attributes);\n }\n return undefined;\n }\n\n static datasets(attributes) {\n return new Datasets(attributes);\n }\n\n static data(attributes) {\n return new Data(attributes);\n }\n}\n\nexport { DatasetsNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n ContentObject,\n StringObject,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\nimport { getInteger, getStringOption } from \"./utils.js\";\n\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"calendarSymbols\", /* hasChildren = */ true);\n this.name = \"gregorian\";\n this.dayNames = new XFAObjectArray(2);\n this.eraNames = null;\n this.meridiemNames = null;\n this.monthNames = new XFAObjectArray(2);\n }\n}\n\nclass CurrencySymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbol\");\n this.name = getStringOption(attributes.name, [\n \"symbol\",\n \"isoname\",\n \"decimal\",\n ]);\n }\n}\n\nclass CurrencySymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"currencySymbols\", /* hasChildren = */ true);\n this.currencySymbol = new XFAObjectArray(3);\n }\n}\n\nclass DatePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass DatePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"datePatterns\", /* hasChildren = */ true);\n this.datePattern = new XFAObjectArray(4);\n }\n}\n\nclass DateTimeSymbols extends ContentObject {\n // TODO: spec unclear about the format of the array.\n\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n }\n}\n\nclass Day extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"day\");\n }\n}\n\nclass DayNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"dayNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.day = new XFAObjectArray(7);\n }\n}\n\nclass Era extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"era\");\n }\n}\n\nclass EraNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"eraNames\", /* hasChildren = */ true);\n this.era = new XFAObjectArray(2);\n }\n}\n\nclass Locale extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"locale\", /* hasChildren = */ true);\n this.desc = attributes.desc || \"\";\n this.name = \"isoname\";\n this.calendarSymbols = null;\n this.currencySymbols = null;\n this.datePatterns = null;\n this.dateTimeSymbols = null;\n this.numberPatterns = null;\n this.numberSymbols = null;\n this.timePatterns = null;\n this.typeFaces = null;\n }\n}\n\nclass LocaleSet extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"localeSet\", /* hasChildren = */ true);\n this.locale = new XFAObjectArray();\n }\n}\n\nclass Meridiem extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiem\");\n }\n}\n\nclass MeridiemNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"meridiemNames\", /* hasChildren = */ true);\n this.meridiem = new XFAObjectArray(2);\n }\n}\n\nclass Month extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"month\");\n }\n}\n\nclass MonthNames extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"monthNames\", /* hasChildren = */ true);\n this.abbr = getInteger({\n data: attributes.abbr,\n defaultValue: 0,\n validate: x => x === 1,\n });\n this.month = new XFAObjectArray(12);\n }\n}\n\nclass NumberPattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass NumberPatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberPatterns\", /* hasChildren = */ true);\n this.numberPattern = new XFAObjectArray(4);\n }\n}\n\nclass NumberSymbol extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbol\");\n this.name = getStringOption(attributes.name, [\n \"decimal\",\n \"grouping\",\n \"percent\",\n \"minus\",\n \"zero\",\n ]);\n }\n}\n\nclass NumberSymbols extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"numberSymbols\", /* hasChildren = */ true);\n this.numberSymbol = new XFAObjectArray(5);\n }\n}\n\nclass TimePattern extends StringObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePattern\");\n this.name = getStringOption(attributes.name, [\n \"full\",\n \"long\",\n \"med\",\n \"short\",\n ]);\n }\n}\n\nclass TimePatterns extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"timePatterns\", /* hasChildren = */ true);\n this.timePattern = new XFAObjectArray(4);\n }\n}\n\nclass TypeFace extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFace\", /* hasChildren = */ true);\n this.name = attributes.name | \"\";\n }\n}\n\nclass TypeFaces extends XFAObject {\n constructor(attributes) {\n super(LOCALE_SET_NS_ID, \"typeFaces\", /* hasChildren = */ true);\n this.typeFace = new XFAObjectArray();\n }\n}\n\nclass LocaleSetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (LocaleSetNamespace.hasOwnProperty(name)) {\n return LocaleSetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static calendarSymbols(attrs) {\n return new CalendarSymbols(attrs);\n }\n\n static currencySymbol(attrs) {\n return new CurrencySymbol(attrs);\n }\n\n static currencySymbols(attrs) {\n return new CurrencySymbols(attrs);\n }\n\n static datePattern(attrs) {\n return new DatePattern(attrs);\n }\n\n static datePatterns(attrs) {\n return new DatePatterns(attrs);\n }\n\n static dateTimeSymbols(attrs) {\n return new DateTimeSymbols(attrs);\n }\n\n static day(attrs) {\n return new Day(attrs);\n }\n\n static dayNames(attrs) {\n return new DayNames(attrs);\n }\n\n static era(attrs) {\n return new Era(attrs);\n }\n\n static eraNames(attrs) {\n return new EraNames(attrs);\n }\n\n static locale(attrs) {\n return new Locale(attrs);\n }\n\n static localeSet(attrs) {\n return new LocaleSet(attrs);\n }\n\n static meridiem(attrs) {\n return new Meridiem(attrs);\n }\n\n static meridiemNames(attrs) {\n return new MeridiemNames(attrs);\n }\n\n static month(attrs) {\n return new Month(attrs);\n }\n\n static monthNames(attrs) {\n return new MonthNames(attrs);\n }\n\n static numberPattern(attrs) {\n return new NumberPattern(attrs);\n }\n\n static numberPatterns(attrs) {\n return new NumberPatterns(attrs);\n }\n\n static numberSymbol(attrs) {\n return new NumberSymbol(attrs);\n }\n\n static numberSymbols(attrs) {\n return new NumberSymbols(attrs);\n }\n\n static timePattern(attrs) {\n return new TimePattern(attrs);\n }\n\n static timePatterns(attrs) {\n return new TimePatterns(attrs);\n }\n\n static typeFace(attrs) {\n return new TypeFace(attrs);\n }\n\n static typeFaces(attrs) {\n return new TypeFaces(attrs);\n }\n}\n\nexport { LocaleSetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\n\nclass Signature extends XFAObject {\n constructor(attributes) {\n super(SIGNATURE_NS_ID, \"signature\", /* hasChildren = */ true);\n }\n}\n\nclass SignatureNamespace {\n static [$buildXFAObject](name, attributes) {\n if (SignatureNamespace.hasOwnProperty(name)) {\n return SignatureNamespace[name](attributes);\n }\n return undefined;\n }\n\n static signature(attributes) {\n return new Signature(attributes);\n }\n}\n\nexport { SignatureNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport { XFAObject } from \"./xfa_object.js\";\n\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends XFAObject {\n constructor(attributes) {\n super(STYLESHEET_NS_ID, \"stylesheet\", /* hasChildren = */ true);\n }\n}\n\nclass StylesheetNamespace {\n static [$buildXFAObject](name, attributes) {\n if (StylesheetNamespace.hasOwnProperty(name)) {\n return StylesheetNamespace[name](attributes);\n }\n return undefined;\n }\n\n static stylesheet(attributes) {\n return new Stylesheet(attributes);\n }\n}\n\nexport { StylesheetNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n $namespaceId,\n $nodeName,\n $onChildCheck,\n XFAObject,\n XFAObjectArray,\n} from \"./xfa_object.js\";\n\nconst XDP_NS_ID = NamespaceIds.xdp.id;\n\nclass Xdp extends XFAObject {\n constructor(attributes) {\n super(XDP_NS_ID, \"xdp\", /* hasChildren = */ true);\n this.uuid = attributes.uuid || \"\";\n this.timeStamp = attributes.timeStamp || \"\";\n this.config = null;\n this.connectionSet = null;\n this.datasets = null;\n this.localeSet = null;\n this.stylesheet = new XFAObjectArray();\n this.template = null;\n }\n\n [$onChildCheck](child) {\n const ns = NamespaceIds[child[$nodeName]];\n return ns && child[$namespaceId] === ns.id;\n }\n}\n\nclass XdpNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XdpNamespace.hasOwnProperty(name)) {\n return XdpNamespace[name](attributes);\n }\n return undefined;\n }\n\n static xdp(attributes) {\n return new Xdp(attributes);\n }\n}\n\nexport { XdpNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n $acceptWhitespace,\n $childrenToHTML,\n $clean,\n $content,\n $extra,\n $getChildren,\n $getParent,\n $globalData,\n $nodeName,\n $onText,\n $pushGlyphs,\n $text,\n $toHTML,\n XmlObject,\n} from \"./xfa_object.js\";\nimport { $buildXFAObject, NamespaceIds } from \"./namespaces.js\";\nimport {\n fixTextIndent,\n fixURL,\n measureToString,\n setFontFamily,\n} from \"./html_utils.js\";\nimport { getMeasurement, HTMLResult, stripQuotes } from \"./utils.js\";\n\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\nconst $richText = Symbol();\n\nconst VALID_STYLES = new Set([\n \"color\",\n \"font\",\n \"font-family\",\n \"font-size\",\n \"font-stretch\",\n \"font-style\",\n \"font-weight\",\n \"margin\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"letter-spacing\",\n \"line-height\",\n \"orphans\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"tab-interval\",\n \"tab-stop\",\n \"text-align\",\n \"text-decoration\",\n \"text-indent\",\n \"vertical-align\",\n \"widows\",\n \"kerning-mode\",\n \"xfa-font-horizontal-scale\",\n \"xfa-font-vertical-scale\",\n \"xfa-spacerun\",\n \"xfa-tab-stops\",\n]);\n\nconst StyleMapping = new Map([\n [\"page-break-after\", \"breakAfter\"],\n [\"page-break-before\", \"breakBefore\"],\n [\"page-break-inside\", \"breakInside\"],\n [\"kerning-mode\", value => (value === \"none\" ? \"none\" : \"normal\")],\n [\n \"xfa-font-horizontal-scale\",\n value =>\n `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\n \"xfa-font-vertical-scale\",\n value =>\n `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`,\n ],\n [\"xfa-spacerun\", \"\"],\n [\"xfa-tab-stops\", \"\"],\n [\n \"font-size\",\n (value, original) => {\n value = original.fontSize = getMeasurement(value);\n return measureToString(0.99 * value);\n },\n ],\n [\"letter-spacing\", value => measureToString(getMeasurement(value))],\n [\"line-height\", value => measureToString(getMeasurement(value))],\n [\"margin\", value => measureToString(getMeasurement(value))],\n [\"margin-bottom\", value => measureToString(getMeasurement(value))],\n [\"margin-left\", value => measureToString(getMeasurement(value))],\n [\"margin-right\", value => measureToString(getMeasurement(value))],\n [\"margin-top\", value => measureToString(getMeasurement(value))],\n [\"text-indent\", value => measureToString(getMeasurement(value))],\n [\"font-family\", value => value],\n [\"vertical-align\", value => measureToString(getMeasurement(value))],\n]);\n\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n const style = Object.create(null);\n if (!styleStr) {\n return style;\n }\n const original = Object.create(null);\n for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n const mapping = StyleMapping.get(key);\n if (mapping === \"\") {\n continue;\n }\n let newValue = value;\n if (mapping) {\n if (typeof mapping === \"string\") {\n newValue = mapping;\n } else {\n newValue = mapping(value, original);\n }\n }\n if (key.endsWith(\"scale\")) {\n if (style.transform) {\n style.transform = `${style[key]} ${newValue}`;\n } else {\n style.transform = newValue;\n }\n } else {\n style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] =\n newValue;\n }\n }\n\n if (style.fontFamily) {\n setFontFamily(\n {\n typeface: style.fontFamily,\n weight: style.fontWeight || \"normal\",\n posture: style.fontStyle || \"normal\",\n size: original.fontSize || 0,\n },\n node,\n node[$globalData].fontFinder,\n style\n );\n }\n\n if (\n richText &&\n style.verticalAlign &&\n style.verticalAlign !== \"0px\" &&\n style.fontSize\n ) {\n // A non-zero verticalAlign means that we've a sub/super-script and\n // consequently the font size must be decreased.\n // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#G11.2097514\n // And the two following factors to position the scripts have been\n // found here:\n // https://en.wikipedia.org/wiki/Subscript_and_superscript#Desktop_publishing\n const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n const VERTICAL_FACTOR = 0.333;\n const fontSize = getMeasurement(style.fontSize);\n style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n style.verticalAlign = measureToString(\n Math.sign(getMeasurement(style.verticalAlign)) *\n fontSize *\n VERTICAL_FACTOR\n );\n }\n\n if (richText && style.fontSize) {\n style.fontSize = `calc(${style.fontSize} * var(--scale-factor))`;\n }\n\n fixTextIndent(style);\n return style;\n}\n\nfunction checkStyle(node) {\n if (!node.style) {\n return \"\";\n }\n\n // Remove any non-allowed keys.\n return node.style\n .trim()\n .split(/\\s*;\\s*/)\n .filter(s => !!s)\n .map(s => s.split(/\\s*:\\s*/, 2))\n .filter(([key, value]) => {\n if (key === \"font-family\") {\n node[$globalData].usedTypefaces.add(value);\n }\n return VALID_STYLES.has(key);\n })\n .map(kv => kv.join(\":\"))\n .join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends XmlObject {\n constructor(attributes, name) {\n super(XHTML_NS_ID, name);\n this[$richText] = false;\n this.style = attributes.style || \"\";\n }\n\n [$clean](builder) {\n super[$clean](builder);\n this.style = checkStyle(this);\n }\n\n [$acceptWhitespace]() {\n return !NoWhites.has(this[$nodeName]);\n }\n\n [$onText](str, richText = false) {\n if (!richText) {\n str = str.replace(crlfRegExp, \"\");\n if (!this.style.includes(\"xfa-spacerun:yes\")) {\n str = str.replace(spacesRegExp, \" \");\n }\n } else {\n this[$richText] = true;\n }\n\n if (str) {\n this[$content] += str;\n }\n }\n\n [$pushGlyphs](measure, mustPop = true) {\n const xfaFont = Object.create(null);\n const margin = {\n top: NaN,\n bottom: NaN,\n left: NaN,\n right: NaN,\n };\n let lineHeight = null;\n for (const [key, value] of this.style\n .split(\";\")\n .map(s => s.split(\":\", 2))) {\n switch (key) {\n case \"font-family\":\n xfaFont.typeface = stripQuotes(value);\n break;\n case \"font-size\":\n xfaFont.size = getMeasurement(value);\n break;\n case \"font-weight\":\n xfaFont.weight = value;\n break;\n case \"font-style\":\n xfaFont.posture = value;\n break;\n case \"letter-spacing\":\n xfaFont.letterSpacing = getMeasurement(value);\n break;\n case \"margin\":\n const values = value.split(/ \\t/).map(x => getMeasurement(x));\n switch (values.length) {\n case 1:\n margin.top =\n margin.bottom =\n margin.left =\n margin.right =\n values[0];\n break;\n case 2:\n margin.top = margin.bottom = values[0];\n margin.left = margin.right = values[1];\n break;\n case 3:\n margin.top = values[0];\n margin.bottom = values[2];\n margin.left = margin.right = values[1];\n break;\n case 4:\n margin.top = values[0];\n margin.left = values[1];\n margin.bottom = values[2];\n margin.right = values[3];\n break;\n }\n break;\n case \"margin-top\":\n margin.top = getMeasurement(value);\n break;\n case \"margin-bottom\":\n margin.bottom = getMeasurement(value);\n break;\n case \"margin-left\":\n margin.left = getMeasurement(value);\n break;\n case \"margin-right\":\n margin.right = getMeasurement(value);\n break;\n case \"line-height\":\n lineHeight = getMeasurement(value);\n break;\n }\n }\n\n measure.pushData(xfaFont, margin, lineHeight);\n\n if (this[$content]) {\n measure.addString(this[$content]);\n } else {\n for (const child of this[$getChildren]()) {\n if (child[$nodeName] === \"#text\") {\n measure.addString(child[$content]);\n continue;\n }\n child[$pushGlyphs](measure);\n }\n }\n\n if (mustPop) {\n measure.popFont();\n }\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n\n if (children.length === 0 && !this[$content]) {\n return HTMLResult.EMPTY;\n }\n\n let value;\n if (this[$richText]) {\n value = this[$content]\n ? this[$content].replace(crlfForRichTextRegExp, \"\\n\")\n : undefined;\n } else {\n value = this[$content] || undefined;\n }\n\n return HTMLResult.success({\n name: this[$nodeName],\n attributes: {\n href: this.href,\n style: mapStyle(this.style, this, this[$richText]),\n },\n children,\n value,\n });\n }\n}\n\nclass A extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"a\");\n this.href = fixURL(attributes.href) || \"\";\n }\n}\n\nclass B extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"b\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ weight: \"bold\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Body extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"body\");\n }\n\n [$toHTML](availableSpace) {\n const res = super[$toHTML](availableSpace);\n const { html } = res;\n if (!html) {\n return HTMLResult.EMPTY;\n }\n html.name = \"div\";\n html.attributes.class = [\"xfaRich\"];\n return res;\n }\n}\n\nclass Br extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"br\");\n }\n\n [$text]() {\n return \"\\n\";\n }\n\n [$pushGlyphs](measure) {\n measure.addString(\"\\n\");\n }\n\n [$toHTML](availableSpace) {\n return HTMLResult.success({\n name: \"br\",\n });\n }\n}\n\nclass Html extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"html\");\n }\n\n [$toHTML](availableSpace) {\n const children = [];\n this[$extra] = {\n children,\n };\n\n this[$childrenToHTML]({});\n if (children.length === 0) {\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n value: this[$content] || \"\",\n });\n }\n\n if (children.length === 1) {\n const child = children[0];\n if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n return HTMLResult.success(child);\n }\n }\n\n return HTMLResult.success({\n name: \"div\",\n attributes: {\n class: [\"xfaRich\"],\n style: {},\n },\n children,\n });\n }\n}\n\nclass I extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"i\");\n }\n\n [$pushGlyphs](measure) {\n measure.pushFont({ posture: \"italic\" });\n super[$pushGlyphs](measure);\n measure.popFont();\n }\n}\n\nclass Li extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"li\");\n }\n}\n\nclass Ol extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ol\");\n }\n}\n\nclass P extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"p\");\n }\n\n [$pushGlyphs](measure) {\n super[$pushGlyphs](measure, /* mustPop = */ false);\n measure.addString(\"\\n\");\n measure.addPara();\n measure.popFont();\n }\n\n [$text]() {\n const siblings = this[$getParent]()[$getChildren]();\n if (siblings.at(-1) === this) {\n return super[$text]();\n }\n return super[$text]() + \"\\n\";\n }\n}\n\nclass Span extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"span\");\n }\n}\n\nclass Sub extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sub\");\n }\n}\n\nclass Sup extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"sup\");\n }\n}\n\nclass Ul extends XhtmlObject {\n constructor(attributes) {\n super(attributes, \"ul\");\n }\n}\n\nclass XhtmlNamespace {\n static [$buildXFAObject](name, attributes) {\n if (XhtmlNamespace.hasOwnProperty(name)) {\n return XhtmlNamespace[name](attributes);\n }\n return undefined;\n }\n\n static a(attributes) {\n return new A(attributes);\n }\n\n static b(attributes) {\n return new B(attributes);\n }\n\n static body(attributes) {\n return new Body(attributes);\n }\n\n static br(attributes) {\n return new Br(attributes);\n }\n\n static html(attributes) {\n return new Html(attributes);\n }\n\n static i(attributes) {\n return new I(attributes);\n }\n\n static li(attributes) {\n return new Li(attributes);\n }\n\n static ol(attributes) {\n return new Ol(attributes);\n }\n\n static p(attributes) {\n return new P(attributes);\n }\n\n static span(attributes) {\n return new Span(attributes);\n }\n\n static sub(attributes) {\n return new Sub(attributes);\n }\n\n static sup(attributes) {\n return new Sup(attributes);\n }\n\n static ul(attributes) {\n return new Ul(attributes);\n }\n}\n\nexport { XhtmlNamespace };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { $buildXFAObject } from \"./namespaces.js\";\nimport { XmlObject } from \"./xfa_object.js\";\n\nclass UnknownNamespace {\n constructor(nsId) {\n this.namespaceId = nsId;\n }\n\n [$buildXFAObject](name, attributes) {\n return new XmlObject(this.namespaceId, name, attributes);\n }\n}\n\nexport { UnknownNamespace };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToUTF8String, warn } from \"../shared/util.js\";\nimport { parseXFAPath } from \"./core_utils.js\";\nimport { SimpleXMLParser } from \"./xml_parser.js\";\n\nfunction decodeString(str) {\n try {\n return stringToUTF8String(str);\n } catch (ex) {\n warn(`UTF-8 decoding failed: \"${ex}\".`);\n return str;\n }\n}\n\nclass DatasetXMLParser extends SimpleXMLParser {\n constructor(options) {\n super(options);\n this.node = null;\n }\n\n onEndElement(name) {\n const node = super.onEndElement(name);\n if (node && name === \"xfa:datasets\") {\n this.node = node;\n\n // We don't need anything else, so just kill the parser.\n throw new Error(\"Aborting DatasetXMLParser.\");\n }\n }\n}\n\nclass DatasetReader {\n constructor(data) {\n if (data.datasets) {\n this.node = new SimpleXMLParser({ hasAttributes: true }).parseFromString(\n data.datasets\n ).documentElement;\n } else {\n const parser = new DatasetXMLParser({ hasAttributes: true });\n try {\n parser.parseFromString(data[\"xdp:xdp\"]);\n } catch (_) {}\n this.node = parser.node;\n }\n }\n\n getValue(path) {\n if (!this.node || !path) {\n return \"\";\n }\n const node = this.node.searchNode(parseXFAPath(path), 0);\n\n if (!node) {\n return \"\";\n }\n\n const first = node.firstChild;\n if (first && first.nodeName === \"value\") {\n return node.children.map(child => decodeString(child.textContent));\n }\n\n return decodeString(node.textContent);\n }\n}\n\nexport { DatasetReader };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FormatError,\n info,\n InvalidPDFException,\n warn,\n} from \"../shared/util.js\";\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \"./primitives.js\";\nimport { Lexer, Parser } from \"./parser.js\";\nimport {\n MissingDataException,\n ParserEOFException,\n XRefEntryException,\n XRefParseException,\n} from \"./core_utils.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CipherTransformFactory } from \"./crypto.js\";\n\nclass XRef {\n constructor(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n this._cacheMap = new Map(); // Prepare the XRef cache.\n this._pendingRefs = new RefSet();\n this._newPersistentRefNum = null;\n this._newTemporaryRefNum = null;\n }\n\n getNewPersistentRef(obj) {\n // When printing we don't care that much about the ref number by itself, it\n // can increase for ever and it allows to keep some re-usable refs.\n if (this._newPersistentRefNum === null) {\n this._newPersistentRefNum = this.entries.length || 1;\n }\n const num = this._newPersistentRefNum++;\n this._cacheMap.set(num, obj);\n return Ref.get(num, 0);\n }\n\n getNewTemporaryRef() {\n // When saving we want to have some minimal numbers.\n // Those refs are only created in order to be written in the final pdf\n // stream.\n if (this._newTemporaryRefNum === null) {\n this._newTemporaryRefNum = this.entries.length || 1;\n }\n return Ref.get(this._newTemporaryRefNum++, 0);\n }\n\n resetNewTemporaryRef() {\n // Called once saving is finished.\n this._newTemporaryRefNum = null;\n }\n\n setStartXRef(startXRef) {\n // Store the starting positions of xref tables as we process them\n // so we can recover from missing data errors\n this.startXRefQueue = [startXRef];\n }\n\n parse(recoveryMode = false) {\n let trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn(\"Indexing all PDF objects\");\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n\n let encrypt;\n try {\n encrypt = trailerDict.get(\"Encrypt\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n }\n if (encrypt instanceof Dict) {\n const ids = trailerDict.get(\"ID\");\n const fileId = ids && ids.length ? ids[0] : \"\";\n // The 'Encrypt' dictionary itself should not be encrypted, and by\n // setting `suppressEncryption` we can prevent an infinite loop inside\n // of `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(\n encrypt,\n fileId,\n this.pdfManager.password\n );\n }\n\n // Get the root dictionary (catalog) object, and do some basic validation.\n let root;\n try {\n root = trailerDict.get(\"Root\");\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n }\n if (root instanceof Dict) {\n try {\n const pages = root.get(\"Pages\");\n if (pages instanceof Dict) {\n this.root = root;\n return;\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n }\n }\n\n if (!recoveryMode) {\n throw new XRefParseException();\n }\n // Even recovery failed, there's nothing more we can do here.\n throw new InvalidPDFException(\"Invalid Root reference.\");\n }\n\n processXRefTable(parser) {\n if (!(\"tableState\" in this)) {\n // Stores state of the table as we process it so we can resume\n // from middle of table in case of missing data error\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2,\n };\n }\n\n const obj = this.readXRefTable(parser);\n\n // Sanity check\n if (!isCmd(obj, \"trailer\")) {\n throw new FormatError(\n \"Invalid XRef table: could not find trailer dictionary\"\n );\n }\n // Read trailer dictionary, e.g.\n // trailer\n // << /Size 22\n // /Root 20R\n // /Info 10R\n // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n // >>\n // The parser goes through the entire stream << ... >> and provides\n // a getter interface for the key-value table\n let dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!(dict instanceof Dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!(dict instanceof Dict)) {\n throw new FormatError(\n \"Invalid XRef table: could not parse trailer dictionary\"\n );\n }\n delete this.tableState;\n\n return dict;\n }\n\n readXRefTable(parser) {\n // Example of cross-reference table:\n // xref\n // 0 1 <-- subsection header (first obj #, obj count)\n // 0000000000 65535 f <-- actual object (offset, generation #, f/n)\n // 23 2 <-- subsection header ... and so on ...\n // 0000025518 00002 n\n // 0000025635 00000 n\n // trailer\n // ...\n\n const stream = parser.lexer.stream;\n const tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n\n // Outer loop is over subsection headers\n let obj;\n\n while (true) {\n if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n if (isCmd((obj = parser.getObj()), \"trailer\")) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n let first = tableState.firstEntryNum;\n const count = tableState.entryCount;\n if (!Number.isInteger(first) || !Number.isInteger(count)) {\n throw new FormatError(\n \"Invalid XRef table: wrong types in subsection header\"\n );\n }\n // Inner loop is over objects themselves\n for (let i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n\n const entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n const type = parser.getObj();\n\n if (type instanceof Cmd) {\n switch (type.cmd) {\n case \"f\":\n entry.free = true;\n break;\n case \"n\":\n entry.uncompressed = true;\n break;\n }\n }\n\n // Validate entry obj\n if (\n !Number.isInteger(entry.offset) ||\n !Number.isInteger(entry.gen) ||\n !(entry.free || entry.uncompressed)\n ) {\n throw new FormatError(\n `Invalid entry in XRef subsection: ${first}, ${count}`\n );\n }\n\n // The first xref table entry, i.e. obj 0, should be free. Attempting\n // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n // Sanity check: as per spec, first object must be free\n if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\"Invalid XRef table: unexpected first object\");\n }\n return obj;\n }\n\n processXRefStream(stream) {\n if (!(\"streamState\" in this)) {\n // Stores state of the stream as we process it so we can resume\n // from middle of stream in case of missing data error\n const streamParameters = stream.dict;\n const byteWidths = streamParameters.get(\"W\");\n let range = streamParameters.get(\"Index\");\n if (!range) {\n range = [0, streamParameters.get(\"Size\")];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos,\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n\n return stream.dict;\n }\n\n readXRefStream(stream) {\n const streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\n streamState.byteWidths;\n\n const entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n const [first, n] = entryRanges;\n\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n }\n if (\n !Number.isInteger(typeFieldWidth) ||\n !Number.isInteger(offsetFieldWidth) ||\n !Number.isInteger(generationFieldWidth)\n ) {\n throw new FormatError(\n `Invalid XRef entry fields length: ${first}, ${n}`\n );\n }\n for (let i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n let type = 0,\n offset = 0,\n generation = 0;\n for (let j = 0; j < typeFieldWidth; ++j) {\n const typeByte = stream.getByte();\n if (typeByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'type'.\");\n }\n type = (type << 8) | typeByte;\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (let j = 0; j < offsetFieldWidth; ++j) {\n const offsetByte = stream.getByte();\n if (offsetByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'offset'.\");\n }\n offset = (offset << 8) | offsetByte;\n }\n for (let j = 0; j < generationFieldWidth; ++j) {\n const generationByte = stream.getByte();\n if (generationByte === -1) {\n throw new FormatError(\"Invalid XRef byteWidths 'generation'.\");\n }\n generation = (generation << 8) | generationByte;\n }\n const entry = {};\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n }\n\n indexObjects() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n const TAB = 0x9,\n LF = 0xa,\n CR = 0xd,\n SPACE = 0x20;\n const PERCENT = 0x25,\n LT = 0x3c;\n\n function readToken(data, offset) {\n let token = \"\",\n ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n const length = what.length,\n dataLength = data.length;\n let skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n let i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break; // sequence found\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n const gEndobjRegExp = /\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer)\\b/g;\n const gStartxrefRegExp = /\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g;\n const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n\n const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n const startxrefBytes = new Uint8Array([\n 115, 116, 97, 114, 116, 120, 114, 101, 102,\n ]);\n const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n // Clear out any existing entries, since they may be bogus.\n this.entries.length = 0;\n this._cacheMap.clear();\n\n const stream = this.stream;\n stream.pos = 0;\n const buffer = stream.getBytes(),\n bufferStr = bytesToString(buffer),\n length = buffer.length;\n let position = stream.start;\n const trailers = [],\n xrefStms = [];\n while (position < length) {\n let ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) {\n // %-comment\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n const token = readToken(buffer, position);\n let m;\n if (\n token.startsWith(\"xref\") &&\n (token.length === 4 || /\\s/.test(token[4]))\n ) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if ((m = objRegExp.exec(token))) {\n const num = m[1] | 0,\n gen = m[2] | 0;\n\n const startPos = position + token.length;\n let contentLength,\n updateEntries = false;\n if (!this.entries[num]) {\n updateEntries = true;\n } else if (this.entries[num].gen === gen) {\n // Before overwriting an existing entry, ensure that the new one won't\n // cause *immediate* errors when it's accessed (fixes issue13783.pdf).\n try {\n const parser = new Parser({\n lexer: new Lexer(stream.makeSubStream(startPos)),\n });\n parser.getObj();\n updateEntries = true;\n } catch (ex) {\n if (ex instanceof ParserEOFException) {\n warn(`indexObjects -- checking object (${token}): \"${ex}\".`);\n } else {\n // The error may come from the `Parser`-instance being initialized\n // without an `XRef`-instance (we don't have a usable one yet).\n updateEntries = true;\n }\n }\n }\n if (updateEntries) {\n this.entries[num] = {\n offset: position - stream.start,\n gen,\n uncompressed: true,\n };\n }\n\n // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n // we won't skip over a new 'obj' operator in corrupt files where\n // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n gEndobjRegExp.lastIndex = startPos;\n const match = gEndobjRegExp.exec(bufferStr);\n\n if (match) {\n const endPos = gEndobjRegExp.lastIndex + 1;\n contentLength = endPos - position;\n\n if (match[1] !== \"endobj\") {\n warn(\n `indexObjects: Found \"${match[1]}\" inside of another \"obj\", ` +\n 'caused by missing \"endobj\" -- trying to recover.'\n );\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n const content = buffer.subarray(position, position + contentLength);\n\n // checking XRef stream suspect\n // (it shall have '/XRef' and next char is not a letter)\n const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1; // Avoid recursion\n }\n\n position += contentLength;\n } else if (\n token.startsWith(\"trailer\") &&\n (token.length === 7 || /\\s/.test(token[7]))\n ) {\n trailers.push(position);\n\n const startPos = position + token.length;\n let contentLength;\n // Attempt to handle (some) corrupt documents, where no 'startxref'\n // operators are present (fixes issue15590.pdf).\n gStartxrefRegExp.lastIndex = startPos;\n const match = gStartxrefRegExp.exec(bufferStr);\n\n if (match) {\n const endPos = gStartxrefRegExp.lastIndex + 1;\n contentLength = endPos - position;\n\n if (match[1] !== \"startxref\") {\n warn(\n `indexObjects: Found \"${match[1]}\" after \"trailer\", ` +\n 'caused by missing \"startxref\" -- trying to recover.'\n );\n contentLength -= match[1].length + 1;\n }\n } else {\n contentLength = length - position;\n }\n position += contentLength;\n } else {\n position += token.length + 1;\n }\n }\n // reading XRef streams\n for (const xrefStm of xrefStms) {\n this.startXRefQueue.push(xrefStm);\n this.readXRef(/* recoveryMode */ true);\n }\n\n const trailerDicts = [];\n // Pre-parsing the trailers to check if the document is possibly encrypted.\n let isEncrypted = false;\n for (const trailer of trailers) {\n stream.pos = trailer;\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n recoveryMode: true,\n });\n const obj = parser.getObj();\n if (!isCmd(obj, \"trailer\")) {\n continue;\n }\n // read the trailer dictionary\n const dict = parser.getObj();\n if (!(dict instanceof Dict)) {\n continue;\n }\n trailerDicts.push(dict);\n\n if (dict.has(\"Encrypt\")) {\n isEncrypted = true;\n }\n }\n\n // finding main trailer\n let trailerDict, trailerError;\n for (const dict of [...trailerDicts, \"genFallback\", ...trailerDicts]) {\n if (dict === \"genFallback\") {\n if (!trailerError) {\n break; // No need to fallback if there were no validation errors.\n }\n this._generationFallback = true;\n continue;\n }\n // Do some basic validation of the trailer/root dictionary candidate.\n let validPagesDict = false;\n try {\n const rootDict = dict.get(\"Root\");\n if (!(rootDict instanceof Dict)) {\n continue;\n }\n const pagesDict = rootDict.get(\"Pages\");\n if (!(pagesDict instanceof Dict)) {\n continue;\n }\n const pagesCount = pagesDict.get(\"Count\");\n if (Number.isInteger(pagesCount)) {\n validPagesDict = true;\n }\n // The top-level /Pages dictionary isn't obviously corrupt.\n } catch (ex) {\n trailerError = ex;\n continue;\n }\n // taking the first one with 'ID'\n if (\n validPagesDict &&\n (!isEncrypted || dict.has(\"Encrypt\")) &&\n dict.has(\"ID\")\n ) {\n return dict;\n }\n // The current dictionary is a candidate, but continue searching.\n trailerDict = dict;\n }\n // No trailer with 'ID', taking last one (if exists).\n if (trailerDict) {\n return trailerDict;\n }\n // No trailer dictionary found, taking the \"top\"-dictionary (if exists).\n if (this.topDict) {\n return this.topDict;\n }\n // nothing helps\n throw new InvalidPDFException(\"Invalid PDF structure.\");\n }\n\n readXRef(recoveryMode = false) {\n const stream = this.stream;\n // Keep track of already parsed XRef tables, to prevent an infinite loop\n // when parsing corrupt PDF files where e.g. the /Prev entries create a\n // circular dependency between tables (fixes bug1393476.pdf).\n const startXRefParsedCache = new Set();\n\n while (this.startXRefQueue.length) {\n try {\n const startXRef = this.startXRefQueue[0];\n\n if (startXRefParsedCache.has(startXRef)) {\n warn(\"readXRef - skipping XRef table since it was already parsed.\");\n this.startXRefQueue.shift();\n continue;\n }\n startXRefParsedCache.add(startXRef);\n\n stream.pos = startXRef + stream.start;\n\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n let obj = parser.getObj();\n let dict;\n\n // Get dictionary\n if (isCmd(obj, \"xref\")) {\n // Parse end-of-file XRef\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n // Recursively get other XRefs 'XRefStm', if any\n obj = dict.get(\"XRefStm\");\n if (Number.isInteger(obj)) {\n const pos = obj;\n // ignore previously loaded xref streams\n // (possible infinite recursion)\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (Number.isInteger(obj)) {\n // Parse in-stream XRef\n if (\n !Number.isInteger(parser.getObj()) ||\n !isCmd(parser.getObj(), \"obj\") ||\n !((obj = parser.getObj()) instanceof BaseStream)\n ) {\n throw new FormatError(\"Invalid XRef stream\");\n }\n dict = this.processXRefStream(obj);\n if (!this.topDict) {\n this.topDict = dict;\n }\n if (!dict) {\n throw new FormatError(\"Failed to read XRef stream\");\n }\n } else {\n throw new FormatError(\"Invalid XRef stream header\");\n }\n\n // Recursively get previous dictionary, if any\n obj = dict.get(\"Prev\");\n if (Number.isInteger(obj)) {\n this.startXRefQueue.push(obj);\n } else if (obj instanceof Ref) {\n // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n this.startXRefQueue.push(obj.num);\n }\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info(\"(while reading XRef): \" + e);\n }\n this.startXRefQueue.shift();\n }\n\n if (this.topDict) {\n return this.topDict;\n }\n if (recoveryMode) {\n return undefined;\n }\n throw new XRefParseException();\n }\n\n getEntry(i) {\n const xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n }\n\n fetchIfRef(obj, suppressEncryption = false) {\n if (obj instanceof Ref) {\n return this.fetch(obj, suppressEncryption);\n }\n return obj;\n }\n\n fetch(ref, suppressEncryption = false) {\n if (!(ref instanceof Ref)) {\n throw new Error(\"ref object is not a reference\");\n }\n const num = ref.num;\n\n // The XRef cache is populated with objects which are obtained through\n // `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\n // methods should ever return `undefined` (note the `assert` calls below).\n const cacheEntry = this._cacheMap.get(num);\n if (cacheEntry !== undefined) {\n // In documents with Object Streams, it's possible that cached `Dict`s\n // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n let xrefEntry = this.getEntry(num);\n\n if (xrefEntry === null) {\n // The referenced entry can be free.\n this._cacheMap.set(num, xrefEntry);\n return xrefEntry;\n }\n // Prevent circular references, in corrupt PDF documents, from hanging the\n // worker-thread. This relies, implicitly, on the parsing being synchronous.\n if (this._pendingRefs.has(ref)) {\n this._pendingRefs.remove(ref);\n\n warn(`Ignoring circular reference: ${ref}.`);\n return CIRCULAR_REF;\n }\n this._pendingRefs.put(ref);\n\n try {\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n }\n this._pendingRefs.remove(ref);\n } catch (ex) {\n this._pendingRefs.remove(ref);\n throw ex;\n }\n if (xrefEntry instanceof Dict) {\n xrefEntry.objId = ref.toString();\n } else if (xrefEntry instanceof BaseStream) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n }\n\n fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n const gen = ref.gen;\n let num = ref.num;\n if (xrefEntry.gen !== gen) {\n const msg = `Inconsistent generation in XRef: ${ref}`;\n // Try falling back to a *previous* generation (fixes issue15577.pdf).\n if (this._generationFallback && xrefEntry.gen < gen) {\n warn(msg);\n return this.fetchUncompressed(\n Ref.get(num, xrefEntry.gen),\n xrefEntry,\n suppressEncryption\n );\n }\n throw new XRefEntryException(msg);\n }\n const stream = this.stream.makeSubStream(\n xrefEntry.offset + this.stream.start\n );\n const parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const obj1 = parser.getObj();\n const obj2 = parser.getObj();\n const obj3 = parser.getObj();\n\n if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (obj3.cmd !== \"obj\") {\n // some bad PDFs use \"obj1234\" and really mean 1234\n if (obj3.cmd.startsWith(\"obj\")) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!Number.isNaN(num)) {\n return num;\n }\n }\n throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n }\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n if (!(xrefEntry instanceof BaseStream)) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n xrefEntry !== undefined,\n 'fetchUncompressed: The \"xrefEntry\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, xrefEntry);\n }\n return xrefEntry;\n }\n\n fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n const tableOffset = xrefEntry.offset;\n const stream = this.fetch(Ref.get(tableOffset, 0));\n if (!(stream instanceof BaseStream)) {\n throw new FormatError(\"bad ObjStm stream\");\n }\n const first = stream.dict.get(\"First\");\n const n = stream.dict.get(\"N\");\n if (!Number.isInteger(first) || !Number.isInteger(n)) {\n throw new FormatError(\"invalid first and n parameters for ObjStm stream\");\n }\n let parser = new Parser({\n lexer: new Lexer(stream),\n xref: this,\n allowStreams: true,\n });\n const nums = new Array(n);\n const offsets = new Array(n);\n // read the object numbers to populate cache\n for (let i = 0; i < n; ++i) {\n const num = parser.getObj();\n if (!Number.isInteger(num)) {\n throw new FormatError(\n `invalid object number in the ObjStm stream: ${num}`\n );\n }\n const offset = parser.getObj();\n if (!Number.isInteger(offset)) {\n throw new FormatError(\n `invalid object offset in the ObjStm stream: ${offset}`\n );\n }\n nums[i] = num;\n offsets[i] = offset;\n }\n\n const start = (stream.start || 0) + first;\n const entries = new Array(n);\n // read stream objects for cache\n for (let i = 0; i < n; ++i) {\n const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n if (length < 0) {\n throw new FormatError(\"Invalid offset in the ObjStm stream.\");\n }\n parser = new Parser({\n lexer: new Lexer(\n stream.makeSubStream(start + offsets[i], length, stream.dict)\n ),\n xref: this,\n allowStreams: true,\n });\n\n const obj = parser.getObj();\n entries[i] = obj;\n if (obj instanceof BaseStream) {\n continue;\n }\n const num = nums[i],\n entry = this.entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n obj !== undefined,\n 'fetchCompressed: The \"obj\" cannot be undefined.'\n );\n }\n this._cacheMap.set(num, obj);\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n }\n return xrefEntry;\n }\n\n async fetchIfRefAsync(obj, suppressEncryption) {\n if (obj instanceof Ref) {\n return this.fetchAsync(obj, suppressEncryption);\n }\n return obj;\n }\n\n async fetchAsync(ref, suppressEncryption) {\n try {\n return this.fetch(ref, suppressEncryption);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n await this.pdfManager.requestRange(ex.begin, ex.end);\n return this.fetchAsync(ref, suppressEncryption);\n }\n }\n\n getCatalogObj() {\n return this.root;\n }\n}\n\nexport { XRef };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2019 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"../shared/util.js\";\n\n/** @implements {IPDFStream} */\nclass PDFWorkerStream {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFWorkerStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFWorkerStreamReader {\n constructor(msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n this._reader = readableStream.getReader();\n\n this._headersReady = this._msgHandler\n .sendWithPromise(\"ReaderHeadersReady\")\n .then(data => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n // `value` is wrapped into Uint8Array, we need to\n // unwrap it to ArrayBuffer for further processing.\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFWorkerStreamRangeReader {\n constructor(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n begin,\n end,\n });\n this._reader = readableStream.getReader();\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n const { value, done } = await this._reader.read();\n if (done) {\n return { value: undefined, done: true };\n }\n return { value: value.buffer, done: false };\n }\n\n cancel(reason) {\n this._reader.cancel(reason);\n }\n}\n\nexport { PDFWorkerStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__w_pdfjs_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__w_pdfjs_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WorkerMessageHandler } from \"./core/worker.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion = PDFJSDev.eval(\"BUNDLE_VERSION\");\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild = PDFJSDev.eval(\"BUNDLE_BUILD\");\n\nexport { WorkerMessageHandler };\n"],"names":["WorkerTask","constructor","name","terminated","_capability","createPromiseCapability","finished","promise","finish","resolve","terminate","ensureNotTerminated","Error","WorkerMessageHandler","setup","handler","port","testMessageProcessed","on","data","send","Uint8Array","setVerbosityLevel","verbosity","createDocumentHandler","docParams","pdfManager","cancelXHRs","WorkerTasks","getVerbosityLevel","docId","apiVersion","workerVersion","enumerableProperties","property","push","length","join","ReadableStream","partialMsg","isNodeJS","workerHandlerName","MessageHandler","startWorkerTask","task","finishWorkerTask","i","indexOf","splice","loadDocument","recoveryMode","ensureDoc","isPureXfa","Promise","all","loadXfaFonts","catch","reason","then","loadXfaImages","numPages","fingerprints","htmlForXfa","getPdfManager","password","disableAutoFetch","rangeChunkSize","docBaseUrl","enableXfa","evaluatorOptions","pdfManagerCapability","newPdfManager","LocalPdfManager","ex","reject","pdfStream","cachedChunks","PDFWorkerStream","fullRequest","getFullReader","headersReady","isRangeSupported","isStreamingSupported","NetworkPdfManager","msgHandler","contentLength","chunk","sendProgressiveData","loaded","flushChunks","pdfFile","arraysToBytes","warn","readChunk","value","done","arrayByteLength","total","Math","max","read","e","cancelAllRequests","setupDoc","onSuccess","doc","pdfInfo","onFailure","PasswordException","code","sendWithPromise","updatePassword","pdfManagerReady","InvalidPDFException","MissingPDFException","UnexpectedResponseException","UnknownErrorException","message","toString","XRefParseException","requestLoadedStream","AbortException","stream","bytes","byteLength","getPage","pageIndex","page","ensure","rotate","ref","userUnit","view","pageRef","Ref","get","num","gen","ensureCatalog","id","intent","getAnnotationsData","annotationStorage","filename","promises","newAnnotationsByPage","getNewAnnotationsMap","annotations","saveNewAnnotations","finally","serializeXfaData","save","acroForm","acroFormRef","xref","startXRef","newRefs","xfaData","refs","flat","needAppearances","Dict","some","xfa","xfaDatasetsRef","hasXfaDatasetsEntry","Array","isArray","ii","getNewTemporaryRef","newXrefInfo","Object","create","trailer","infoObj","xrefInfo","forEach","key","stringToPDFString","rootRef","getRaw","encryptRef","newRef","infoRef","info","fileIds","incrementalUpdate","originalData","hasXfa","resetNewTemporaryRef","sink","start","VerbosityLevel","INFOS","Date","now","getOperatorList","cacheKey","operatorListInfo","close","error","extractTextContent","includeMarkedContent","combineTextItems","fontFallback","cleanup","waitOn","cleanupPromise","clearGlobalCaches","destroy","initializeFromPort","isMessagePort","maybePort","postMessage","window","self","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","LINE_FACTOR","LINE_DESCENT_FACTOR","BASELINE_FACTOR","RenderingIntentFlag","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","INK","AnnotationEditorParamsType","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","ERRORS","WARNINGS","CMapCompressionType","BINARY","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","forms","javaScript","signatures","smask","shadingPattern","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","level","Number","isInteger","msg","console","log","unreachable","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","tryConvertEncoding","stringToUTF8String","absoluteUrl","URL","shadow","obj","prop","nonSerializable","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","prototype","details","status","FormatError","bytesToString","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","chunkEnd","min","subarray","stringToBytes","str","charCodeAt","arr","resultLength","pos","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","platform","navigator","isWin","isMac","includes","hexNumbers","n","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","inverseTransform","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","encoding","decoder","TextDecoder","fatal","decode","charAt","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","v","isArrayEqual","arr1","arr2","getModificationDate","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","capability","isSettled","CIRCULAR_REF","Symbol","EOF","Name","NameClosure","nameCache","_clearCache","Cmd","CmdClosure","cmdCache","cmd","nonSerializableClosure","_map","objId","suppressEncryption","__nonSerializable__","assignXref","newXref","size","key1","key2","key3","fetch","getAsync","fetchAsync","getArray","getKeys","getRawValues","values","has","callback","empty","emptyDict","merge","dictArray","mergeSubDicts","mergedDict","properties","Map","dict","entries","subDict","clear","RefClosure","refCache","RefSet","parent","_set","Set","put","add","remove","delete","iterator","RefSetCache","putAlias","aliasRef","isName","isCmd","isDict","type","isRefsEqual","v1","v2","clearPrimitiveCaches","PDF_VERSION_REGEXP","getLookupTableFactory","initializer","lookup","getArrayLookupTableFactory","MissingDataException","begin","end","ParserEOFException","XRefEntryException","getInheritableProperty","stopWhenFound","visited","ROMAN_NUMBER_MAP","toRomanNumerals","number","lowerCase","romanBuf","romanStr","toLowerCase","log2","x","ceil","readInt8","offset","readUint16","readUint32","isWhiteSpace","ch","parseXFAPath","path","positionPattern","split","component","parseInt","escapePDFName","char","substring","escapeString","replace","_collectJS","entry","list","parents","element","js","BaseStream","getString","collectActions","eventType","actions","additionalActionsDicts","additionalActions","action","actionDict","Action","XMLEntities","encodeToXmlString","codePointAt","entity","toUpperCase","validateCSSFont","cssFontInfo","DEFAULT_CSS_FONT_OBLIQUE","DEFAULT_CSS_FONT_WEIGHT","CSS_FONT_WEIGHT_VALUES","fontFamily","fontWeight","italicAngle","test","ident","weight","angle","parseFloat","isNaN","recoverJsURL","URL_OPEN_METHODS","regex","RegExp","jsUrl","exec","newWindow","numberToString","roundedValue","round","toFixed","isAscii","stringToUTF16HexString","buf","stringToUTF16String","bigEndian","getRotationMatrix","rotation","width","height","isEmpty","isDataLoaded","getByte","getBytes","peekByte","peekedByte","peekBytes","getUint16","b0","b1","getInt32","b2","b3","getByteRange","skip","reset","moveStart","makeSubStream","getBaseStreams","parseDocBaseUrl","href","BasePdfManager","_docId","_password","catalog","pdfDocument","_docBaseUrl","args","ensureXRef","manuallyTriggered","requestRange","noFetch","Stream","PDFDocument","_loadedStreamPromise","pdfNetworkStream","streamManager","ChunkedStreamManager","getStream","requestAllChunks","onReceiveData","abort","ChunkedStream","chunkSize","manager","_loadedChunks","numChunks","progressiveDataLength","lastSuccessfulEnsureByteChunk","getMissingChunks","chunks","numChunksLoaded","beginChunk","floor","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","hasChunk","strEnd","ChunkedStreamSubstream","missingChunks","subStream","currRequestId","_chunksNeededByRequest","_requestsByChunk","_promisesByRequest","aborted","_loadedStreamCapability","sendRequest","rangeReader","getRangeReader","onProgress","bind","chunkData","_requestChunks","requestId","chunksNeeded","chunksToRequest","requestIds","groupedChunksToRequest","groupChunks","groupedChunk","getBeginChunk","getEndChunk","requestRanges","ranges","range","sort","groupedChunks","prevChunk","isProgressive","loadedRequests","lastChunk","onError","err","arrayBuffer","StringStream","NullStream","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","Page","pageDict","globalIdFactory","fontCache","builtInCMapCache","standardFontDataCache","globalImageCache","nonBlendModesSet","xfaFactory","resourcesPromise","idCounters","_localIdFactory","createObjId","getPageObjId","_getInheritableProperty","content","resources","_getBoundingBox","bbox","box","mediaBox","cropBox","_onSubStreamError","ignoreErrors","featureId","getContentStream","StreamsSequenceStream","getBoundingBox","partialEvaluator","PartialEvaluator","idFactory","annotationsArray","newData","AnnotationFactory","savedDict","encrypt","createCipherTransform","writeObject","objects","dependencies","_parsedAnnotations","newRefsPromises","annotation","mustBePrinted","filter","loadResources","objectLoader","ObjectLoader","load","contentStreamPromise","newAnnotationsPromise","newAnnotations","printNewAnnotations","dataPromises","pageListPromise","contentStream","opList","OperatorList","transparency","hasBlendModes","operatorList","pageOpList","concat","flush","totalLength","renderForms","intentAny","intentDisplay","intentPrint","opListPromises","mustBeViewed","separateForm","separateCanvas","opLists","form","canvas","addOpList","getTextContent","viewBox","getStructTree","structTreeRoot","structTree","serializable","_parseStructTree","tree","StructTreePage","parse","textContentPromises","annotationsData","isVisible","viewable","printable","hasTextContent","annots","parsedAnnotations","annotationPromises","annotationRef","sortedAnnotations","popupAnnotations","PopupAnnotation","jsActions","PDF_HEADER_SIGNATURE","STARTXREF_SIGNATURE","ENDOBJ_SIGNATURE","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","find","signature","limit","backwards","signatureLength","scanBytes","scanLength","signatureEnd","XRef","_pagePromises","_version","font","_globalIdFactory","getDocId","createFontId","Catalog","linearization","Linearization","step","startXRefLength","found","checkHeader","version","parseStartXRef","setStartXRef","hasActualNumPages","getNumPages","_hasOnlyDocumentSignatures","fields","recursionDepth","RECURSION_LIMIT","every","field","fetchIfRef","isSignature","isInvisible","_xfaStreams","template","datasets","config","connectionSet","localeSet","stylesheet","hasOwnProperty","xfaDatasets","streams","DatasetReader","_","needsRendering","formInfo","hasAcroForm","XFAFactory","isValid","getPages","xfaImagesDict","xfaImages","setImages","fontRes","assign","useSystemFonts","pdfFonts","initialState","at","clone","fonts","fontName","descriptor","handleSetFont","missingFonts","setFonts","reallyMissingFonts","missing","getXfaFontName","fontInfo","getXfaFontDict","appendFonts","serializeData","hasFields","hasSignatures","sigFlags","hasOnlyDocumentSignatures","documentInfo","docInfo","PDFFormatVersion","Language","lang","EncryptFilterName","filterName","IsLinearized","IsAcroFormPresent","IsXFAPresent","IsCollectionPresent","collection","IsSignaturesPresent","infoDict","customValue","Custom","validate","hexString","hash","hex","idArray","hashOriginal","hashModified","calculateMD5","_getLinearizationPage","objectNumberFirst","pageKidsCountCache","pageIndexCache","getPageDict","cachedPromise","pageFirst","checkFirstPage","checkLastPage","setActualNumPages","pagesTree","getAllPageDicts","reasonAll","_collectFieldObjects","fieldRef","partName","getFieldObject","kids","kid","fieldObjects","allFields","fieldPromises","allPromises","hasJSActions","_parseHasJSActions","catalogJsActions","fieldObject","object","calculationOrderIds","calculationOrder","ids","collectFields","_getPageIndex","attachments","_create","subtype","acroFormDict","parameters","LinkAnnotation","TextAnnotation","fieldType","TextWidgetAnnotation","ButtonWidgetAnnotation","ChoiceWidgetAnnotation","SignatureWidgetAnnotation","WidgetAnnotation","FreeTextAnnotation","LineAnnotation","SquareAnnotation","CircleAnnotation","PolylineAnnotation","PolygonAnnotation","CaretAnnotation","InkAnnotation","HighlightAnnotation","UnderlineAnnotation","SquigglyAnnotation","StrikeOutAnnotation","StampAnnotation","FileAttachmentAnnotation","Annotation","annotDict","fetchIfRefAsync","evaluator","baseFontRef","annotationType","baseFont","createNewAnnotation","createNewPrintAnnotation","getRgbColor","color","defaultColor","Uint8ClampedArray","rgbColor","ColorSpace","singletons","gray","getRgbItem","rgb","cmyk","getPdfColorArray","from","getQuadPoints","quadPoints","quadPointsLists","minX","Infinity","maxX","minY","maxY","jj","y","getTransformMatrix","matrix","xRatio","yRatio","params","setTitle","setContents","setModificationDate","setFlags","setRectangle","setColor","setBorderStyle","setAppearance","setOptionalContent","MK","setBorderAndBackgroundColors","setRotation","_streams","appearance","annotationFlags","flags","borderStyle","backgroundColor","borderColor","contentsObj","_contents","hasAppearance","modificationDate","hasOwnCanvas","kidIds","fieldName","_constructFieldName","_isOffscreenCanvasSupported","_fallbackFontDict","_needAppearances","_hasFlag","flag","_isViewable","_isPrintable","storageEntry","hidden","print","_parseStringHelper","dir","bidi","setDefaultAppearance","defaultAppearance","_defaultAppearance","defaultAppearanceData","parseDefaultAppearance","title","_title","contents","hasFlag","setLineEndings","lineEndings","mk","AnnotationBorderStyle","dictType","setWidth","setStyle","setDashArray","array","setHorizontalCornerRadius","setVerticalCornerRadius","appearanceStates","normalAppearanceState","as","oc","isUsingOwnCanvas","appearanceDict","optionalContent","parseMarkedContentProps","addOp","fallbackFontDict","text","desiredSize","ready","enqueue","items","hasEOL","textContent","strokeColor","fillColor","unshift","loopDict","style","dashArray","horizontalCornerRadius","verticalCornerRadius","maxWidth","maxHeight","forceStyle","allZeros","validNumber","radius","MarkupAnnotation","rawIRT","inReplyTo","rt","replyType","titleObj","creationDate","setCreationDate","hasPopup","richText","getRichTextAsHtml","_setDefaultAppearance","extra","blendMode","strokeAlpha","fillAlpha","pointsCallback","MAX_VALUE","MIN_VALUE","pointsArray","points","mX","MX","mY","MY","formDict","appearanceStreamDict","appearanceStream","gsDict","stateDict","ap","createNewAppearanceStream","annotationDict","apRef","createNewDict","fieldValue","_decodeFormValue","defaultFieldValue","_hasValueFromXFA","getValue","alternativeText","localResources","acroFormResources","appearanceResources","_fieldResources","mergedResources","fieldFlags","readOnly","hasFieldFlag","required","formValue","getBorderAndBackgroundAppearances","getPdfColor","borderWidth","_hasText","_getAppearance","_getMKDict","originalDict","encoder","val","maybeMK","originalTransform","changes","AP","newTransform","encryptString","_getSaveFieldResources","rotationMatrix","isPassword","formattedValue","colors","combo","trim","option","exportValue","displayValue","lineCount","lines","multiLine","line","normalize","defaultPadding","defaultHPadding","totalHeight","totalWidth","_getFontData","fontSize","lineHeight","encodedLines","encodingError","encodedString","encodeString","comb","fakeUnicodeFont","FakeUnicodeFont","createFontResources","newFont","oldFont","savedDefaultAppearance","_computeFontSize","descent","defaultVPadding","alignment","textAlignment","_getMultilineAppearance","_getCombAppearance","bottomPadding","prevInfo","shift","renderedText","_renderText","appearanceData","_getTextWidth","charsToGlyphs","reduce","glyph","numberOfLines","roundWithTwoDigits","textWidth","cachedLines","encoded","glyphs","positions","getCharPositions","isTooBig","fsize","cache","_splitLine","fontColor","createDefaultAppearance","hPadding","vPadding","shiftStr","localFont","acroFormFont","subFontDict","subResourcesDict","maximumLength","maxLen","doNotScroll","combWidth","renderedComb","vShift","scale","lastSpacePosInStringStart","lastSpacePosInStringEnd","lastSpacePos","startChunk","currentWidth","glyphWidth","unicode","defaultValue","multiline","charLimit","editable","checkedAppearance","uncheckedAppearance","checkBox","radioButton","pushButton","isTooltipOnly","_processCheckBox","_processRadioButton","_processPushButton","buttonValue","savedAppearance","savedMatrix","_saveCheckbox","_saveRadioButton","writeDict","parentBuffer","parentTransform","_getDefaultCheckedAppearance","FONT_RATIO","metrics","xShift","yShift","customAppearance","normalAppearance","asValue","yes","exportValues","otherYes","fieldParent","fieldParentValue","parseDestDictionary","destDict","resultObj","docAttachments","isOptionArray","multiSelect","numItems","multipleSelection","exportedValue","valueIndices","lineWidth","numberOfVisibleLines","firstIndex","valuePosition","indexInPage","index","vpadding","DEFAULT_ICON_SIZE","state","stateModel","parentItem","parentSubtype","parentType","rawParent","parentId","parentRect","parentFlags","fontData","createAppearance","toUnicodeStream","user","freetext","da","helv","w","h","hscale","vscale","lineDescent","fscale","newFontSize","lineCoordinates","interiorColor","borderAdjust","controlPointsDistance","tan","xMid","yMid","xOffset","yOffset","vertices","rawVertices","vertex","inkLists","rawInkLists","inkList","paths","ink","thickness","opacity","appearanceBuffer","bezier","curve","extGState","r0","dy","xEnd","file","FileSpec","DefaultAppearanceEvaluator","EvaluatorPreprocessor","operation","fn","result","savedStatesDepth","isFill","widths","firstChar","lastChar","ctxMeasure","getContext","_fontNameId","toUnicodeRef","_toUnicodeRef","toUnicode","toUnicodeDict","getNewPersistentRef","fontDescriptorRef","_fontDescriptorRef","fontDescriptor","descendantFontRef","descendantFont","chars","currentChar","currentWidths","cidSystemInfo","_createContext","ctx","measureText","bgColor","resizeRgbImage","src","dest","w1","h1","w2","h2","alpha01","COMPONENTS","newIndex","oldIndex","xScaled","Uint16Array","w1Scanline","py","numComps","getRgb","srcOffset","destOffset","getRgbBuffer","count","bits","getOutputLength","inputLength","isPassthrough","isDefaultDecode","decodeMap","bpc","fillRgb","originalWidth","originalHeight","actualHeight","comps","rgbBuf","numComponentColors","needsResizing","allColors","colorMap","destPos","rgbPos","usesZeroToOneRange","_cache","localColorSpaceCache","parsedColorSpace","csName","csRef","getCached","localColorSpace","getByRef","getByName","parseAsync","cs","pdfFunctionFactory","_parse","cachedColorSpace","PatternCS","colorSpaces","resourcesCS","mode","baseCS","whitePoint","blackPoint","gamma","CalGrayCS","CalRGBCS","alt","altCS","hiVal","IndexedCS","tintFn","AlternateCS","LabCS","DeviceGrayCS","DeviceRgbCS","DeviceCmykCS","base","tmpBuf","Float32Array","baseNumComps","baseBuf","scaled","tinted","highVal","outputDelta","lookupPos","q","DeviceCmykCSClosure","convertToRgb","srcScale","k","CalGrayCSClosure","A","AG","G","L","YW","XW","ZW","XB","YB","ZB","CalRGBCSClosure","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","matrixProduct","convertToFlat","sourceWhitePoint","LMS","convertToD65","D65X","D65Y","D65Z","sRGBTransferFunction","adjustToRange","decodeL","compensateBlackPoint","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","normalizeWhitePointToFlat","XYZ_In","LMS_Flat","normalizeWhitePointToD65","LMS_D65","B","AGR","GR","BGG","GG","CGB","GB","MXA","MXB","MXC","Y","MYA","MYB","MYC","Z","MZA","MZB","MZC","XYZ","XYZ_Black","XYZ_D65","SRGB","LabCSClosure","fn_g","high1","low2","high2","maxVal","Ls","bs","amin","amax","bmin","bmax","M","N","DefaultPartialEvaluatorOptions","freeze","maxImageSize","disableFontFace","fontExtraProperties","cMapUrl","standardFontDataUrl","PatternType","TILING","SHADING","TEXT_CHUNK_BATCH_SIZE","deferred","normalizeBlendMode","parsingArray","maybeBM","incrementCachedImageMaskCount","TimeSlotManager","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","check","checked","endTime","parsingType3Font","_fetchBuiltInCMapBound","fetchBuiltInCMap","_pdfFunctionFactory","PDFFunctionFactory","newOptions","newEvaluator","processed","nodes","node","graphicStates","graphicState","bm","xObjects","xObject","xResources","cachedData","response","ok","statusText","cMapData","compressionType","fetchStandardFontData","standardFontNameToFileName","getFontNameToFileMap","buildFormXObject","xobj","groupOptions","group","isolated","knockout","groupSubtype","colorSpace","parseColorSpace","backdrop","_sendImgData","imgData","cacheGlobally","transfers","bitmap","buildPaintImageXObject","image","isInline","localImageCache","imageRef","imageMask","interpolate","bitStrideLength","imgArray","PDFImage","createRawMask","imageIsFromDecodeStream","DecodeStream","inverseDecode","cached","addImageOps","createMask","isSingleOpaquePixel","addDependency","softMask","mask","SMALL_IMAGE_DIMENSIONS","imageObj","res","createImageData","shouldCache","buildImage","addByteSize","addPageIndex","setData","byteSize","handleSMask","stateManager","smaskContent","smaskOptions","transferObj","isPDFFunction","transferFn","transferMap","tmp","handleTransferFunction","tr","transferArray","transferMaps","numFns","numEffectfulFns","handleTilingType","pattern","patternDict","localTilingPatternCache","tilingOpList","patternResources","operatorListIR","getIR","tilingPatternIR","getTilingPatternIR","addDependencies","fontArgs","fontRef","loadFont","translated","isType3Font","loadType3Data","type3Dependencies","TranslatedFont","loadedName","ErrorFont","handleText","isAddToPathSet","textRenderingMode","fillColorSpace","buildFontPaths","ensureStateFont","gState","localGStateCache","gStateRef","isSimpleGState","gStateObj","errorFont","type3FontRefs","fontCapability","preEvaluatedFont","preEvaluateFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","translateFont","translatedFont","buildPath","parsingText","lastIndex","fnArray","opArgs","argsArray","parseShading","shading","localShadingPatternCache","Pattern","patternIR","handleColorN","patterns","patternName","pop","rawPattern","localTilingPattern","typeNum","_parseVisibilityExpression","nestingCounter","currentResult","MAX_NESTING","operator","raw","nestedResult","contentProperties","optionalContentType","expression","optionalContentGroups","groupIds","ocg","policy","EvalState","LocalImageCache","LocalColorSpaceCache","LocalGStateCache","LocalTilingPatternCache","xobjs","StateManager","preprocessor","timeSlotManager","closePendingRestoreOPS","argument","promiseBody","next","stop","isValidName","localImage","resolveXObject","rejectXObject","globalImage","getData","combinedGlyphs","arrItem","strokeColorSpace","shadingRes","patternId","localGStateObj","resolveGState","rejectGState","seenStyles","markedContentData","TextState","styles","textContentItem","initialized","vertical","prevTransform","textAdvanceScale","spaceInFlowMin","spaceInFlowMax","trackingSpaceMin","negativeSpaceMax","notASpace","twoLastChars","twoLastCharsPos","saveLastChar","nextPos","ret","resetLastChars","TRACKING_SPACE_FACTOR","NOT_A_SPACE_FACTOR","NEGATIVE_SPACE_FACTOR","SPACE_IN_FLOW_MIN_FACTOR","SPACE_IN_FLOW_MAX_FACTOR","showSpacedTextBuffer","emptyXObjectCache","emptyGStateCache","textState","getCurrentTextTransform","tsm","textHScale","textRise","isCharBBox","fontMatrix","glyphHeight","ctm","textMatrix","ensureTextContentItem","fallbackName","ascent","trm","hypot","scaleLineX","textLineMatrix","scaleCtmX","updateAdvanceScale","scaleFactor","runBidiTransform","textChunk","bidiResult","applyInverseRotation","compareWithLastPosition","currentTransform","posX","posY","shiftedX","shiftedY","lastPosX","lastPosY","advanceY","advanceX","textOrientation","sign","appendEOL","flushTextContentItem","addFakeSpaces","buildTextContentItem","extraSpacing","charSpacing","translateTextMatrix","category","isInvisibleFormatMark","vmetric","scaledDim","isWhitespace","wordSpacing","isZeroWidthDiacritic","glyphUnicode","normalizedUnicode","transf","enqueueChunk","batch","fontNameArg","fontSizeArg","leading","translateTextLineMatrix","carriageReturn","setTextLineMatrix","spaceFactor","elements","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","gStateFont","tag","mcid","extractDataStructures","baseDict","cidToGidBytes","toUnicodePromise","readToUnicode","composite","registry","ordering","supplement","cidToGidMap","differences","baseEncodingName","diffEncoding","defaultEncoding","getEncoding","isSymbolicFont","FontFlags","Symbolic","isNonsymbolicFont","Nonsymbolic","StandardEncoding","WinAnsiEncoding","MacRomanEncoding","isInternalFont","SymbolSetEncoding","ZapfDingbatsEncoding","hasEncoding","buildToUnicode","builtToUnicode","readCidToGidMap","_simpleFontToUnicode","forceGlyphs","charcode","glyphName","glyphsUnicodeMap","getGlyphsUnicode","codeStr","getUnicodeForGlyph","baseEncoding","fromCodePoint","hasIncludedToUnicodeMap","fallbackToUnicode","ToUnicodeMap","cMap","builtInCMap","IdentityCMap","ucs2CMapName","ucs2CMap","CMapFactory","useCMap","cid","ucs2","IdentityToUnicodeMap","cmapObj","cmap","getMap","charCode","token","glyphsData","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","defaultVMetrics","vmetrics","baseFontName","getBaseFontMetrics","buildCharCodeToWidth","isMonospace","firstWidth","FixedPitch","isSerifFont","fontNameWoStyle","getSerifFonts","monospace","stdFontMap","getStdFontMap","lookupName","Metrics","getMetrics","glyphWidths","widthsByGlyphName","df","MurmurHash3_64","update","diffLength","diffBuf","diffEntry","uint8array","bufferLength","widthsBuf","compositeWidths","subWidthsBuf","hexdigest","Serif","getSymbolsFonts","isSimulatedFlags","xHeight","capHeight","standardFontName","getStandardFontName","isStandardFont","newProperties","Font","fontNameStr","baseFontStr","fontFile","length1","length2","length3","glyphScaleFactors","subtypeEntry","factors","fixedPitch","scaleFactors","cidEncoding","fontChar","renderer","hasBuiltPath","getPathJs","accent","_evaluatorOptions","type3Loaded","sent","exportData","fallback","glyphCacheValues","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcOperatorList","fontBBox","fontBBoxSize","glyphStream","_removeType3ColorOperators","dummyOperatorList","_bbox","NaN","charBBox","charBBoxSize","gStateKey","stateStack","old","prev","f","opMap","getOPMap","numArgs","variableArgs","J","ri","gs","Q","cm","l","re","S","s","W","BT","ET","Tc","Tw","Tz","TL","Tf","Tr","Ts","Td","TD","Tm","Tj","TJ","d0","d1","CS","SC","SCN","sc","scn","RG","rg","sh","BI","ID","EI","Do","MP","BMC","BDC","EMC","BX","EX","BM","BD","true","fa","fal","fals","false","nu","nul","null","MAX_INVALID_PATH_OPS","parser","Parser","lexer","Lexer","nonProcessedArgs","_isPathOp","_numInvalidPathOPS","getObj","opSpec","argsLength","preprocessCommand","BUILT_IN_CMAPS","MAX_MAP_RANGE","CMap","codespaceRanges","numCodespaceRanges","addCodespaceRange","low","high","mapCidRange","dstLow","mapBfRange","lastByte","nextCharCode","mapBfRangeToArray","mapOne","dst","contains","charCodeOf","readCharCode","out","nn","codespaceRange","kk","getCharCodeLength","isIdentityCMap","BinaryCMapReader","BinaryCMapReaderClosure","hexToInt","hexToStr","addHex","incHex","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","last","readSigned","readHex","readHexNumber","stack","sp","bufferSize","readHexSigned","readString","len","process","extend","header","sequence","dataSize","ucs2DataSize","subitemsCount","CMapFactoryClosure","strToInt","expectString","expectInt","parseBfChar","parseBfRange","parseCidChar","parseCidRange","parseCodespaceRange","parseWMode","parseCMapName","parseCMap","previous","embeddedUseCMap","objLoop","extendCMap","createBuiltInCMap","useCodespaceRanges","parsedCMap","MAX_LENGTH_TO_CACHE","getInlineImageCacheKey","allowStreams","imageCache","_imageId","refill","buf1","buf2","tryShift","cipherTransform","makeInlineImage","makeStream","decryptString","findDefaultInlineStreamEnd","I","SPACE","LF","CR","NUL","startPos","maybeEIPos","followingBytes","knownCommands","nextObj","peekObj","endOffset","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","inlineStreamSkipEI","findASCII85DecodeInlineStreamEnd","TILDE","GT","tildePos","maybeEI","findASCIIHexDecodeInlineStreamEnd","dictMap","dictLength","beginInlineImagePos","Filter","filterZero","initialStreamPos","cacheEntry","imageStream","createStream","_findStreamLength","SCAN_BLOCK_LENGTH","skipToNextLine","nextChar","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","makeFilter","filterArray","paramsArray","PredictorStream","FlateStream","earlyChange","LZWStream","JpegStream","JpxStream","Ascii85Stream","AsciiHexStream","CCITTFaxStream","RunLengthStream","Jbig2Stream","specialChars","toHexDigit","_hexStringNumWarn","peekChar","getNumber","eNotation","divideBy","baseValue","powerValue","powerValueSign","currentDigit","numParen","charBuffered","getName","previousCh","_hexStringWarn","MAX_HEX_STRING_NUM_WARN","getHexString","isFirstHex","firstDigit","secondDigit","comment","nextCh","knownCommandFound","possibleCommand","streamPos","getInt","linDict","allowZeroValue","getHints","hints","hintsLength","hint","obj1","obj2","obj3","endFirst","mainXRefEntriesOffset","input","readBlock","TILDA_CHAR","Z_LOWER_CHAR","eof","ensureBuffer","emptyBuffer","maybeMinBufferLength","_rawMinBufferLength","minBufferLength","requested","buffer2","bufEnd","_onError","newLength","baseStreamsBuf","baseStreams","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","source","ccittFaxDecoder","CCITTFaxDecoder","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","readNextChar","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoline","byteAlign","columns","rows","eoblock","black","codingLine","refLine","codingPos","row","nextLine2D","inputBits","inputBuf","outputBits","rowsDone","code1","_lookBits","_eatBits","refPos","blackPixels","code2","code3","_getTwoDimCode","_addPixels","_getBlackCode","_getWhiteCode","_addPixelsNeg","gotEOL","a1","_findTableCode","table","limitValue","codeLenCodeMap","Int32Array","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","getBits","getCode","codes","codeLen","codeVal","generateHuffmanTable","lengths","hdr","blockLen","block","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","what","repeatLength","dist","jbig2Image","Jbig2Image","globalsStream","globals","parseChunks","dataLength","Jbig2Error","ContextCache","getContexts","Int8Array","DecodingContext","ArithmeticDecoder","contextCache","MAX_INT_32","MIN_INT_32","decodeInteger","procedure","contexts","readBits","bit","readBit","signedValue","decodeIAID","codeLength","SegmentTypes","CodingTemplates","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodeBitmapTemplate0","decodingContext","contextLabel","pixel","row1","row2","OLD_PIXEL_MASK","decodeBitmap","mmr","templateIndex","prediction","Reader","decodeMMRBitmap","useskip","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","pseudoPixelContext","ltp","i0","j0","sltp","decodeRefinement","referenceBitmap","offsetX","offsetY","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceHeight","decodeSymbolDictionary","huffman","refinement","symbols","numberOfNewSymbols","numberOfExportedSymbols","huffmanTables","refinementTemplateIndex","refinementAt","huffmanInput","newSymbols","currentHeight","symbolCodeLength","tableB1","symbolWidths","getStandardTable","deltaHeight","tableDeltaHeight","firstSymbol","deltaWidth","tableDeltaWidth","numberOfInstances","decodeTextRegion","symbolId","rdx","rdy","symbol","bitmapSize","tableBitmapSize","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","xMax","bitmapWidth","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","defaultPixelValue","numberOfSymbolInstances","stripSize","inputSymbols","transposed","dsOffset","referenceCorner","combinationOperator","logStripSize","stripT","tableDeltaT","firstS","deltaT","deltaFirstS","tableFirstS","currentS","currentT","symbolIDTable","applyRefinement","symbolWidth","symbolHeight","rdw","rdh","offsetT","offsetS","s2","symbolRow","deltaS","tableDeltaS","decodePatternDictionary","patternWidth","patternHeight","maxPatternIndex","collectiveWidth","patternBitmap","decodeHalftoneRegion","regionWidth","regionHeight","enableSkip","gridWidth","gridHeight","gridOffsetX","gridOffsetY","gridVectorX","gridVectorY","regionBitmap","numberOfPatterns","pattern0","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","patternRow","regionRow","regionX","regionY","readSegmentHeader","segmentHeader","segmentType","typeName","deferredNonRetain","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","pageAssociation","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","RegionSegmentInformationFieldLength","genericRegionMmr","searchPatternLength","searchPattern","headerEnd","readSegments","segments","segment","randomAccess","processSegment","visitor","atLength","dictionary","dictionaryFlags","huffmanDHSelector","huffmanDWSelector","bitmapSizeSelector","aggregationInstancesSelector","bitmapCodingContextUsed","bitmapCodingContextRetained","refinementTemplate","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","huffmanFS","huffmanDS","huffmanDT","huffmanRefinementDW","huffmanRefinementDH","huffmanRefinementDX","huffmanRefinementDY","huffmanRefinementSizeSelector","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","lossless","requiresBuffer","combinationOperatorOverride","callbackName","processSegments","parseJbig2Chunks","SimpleSegmentVisitor","parseJbig2","onPageInformation","currentPageInfo","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","arguments","onSymbolDictionary","currentSegment","referredSegments","getSymbolDictionaryHuffmanTables","customTables","referredSegment","referredSymbols","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","onImmediateHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","decodeTablesSegment","HuffmanLine","lineData","isOOB","rangeLow","prefixLength","rangeLength","prefixCode","isLowerRange","HuffmanTreeNode","children","isLeaf","buildTree","decodeNode","reader","htOffset","HuffmanTable","prefixCodesDone","assignPrefixCodes","rootNode","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","standardTablesCache","currentByte","numBits","getCustomHuffmanTable","currentIndex","numberOfSymbols","runCodesTable","repeatedLength","numberOfRepeats","customIndex","tableAggregateInstances","endOfBlock","lookForEOFLimit","QeTable","qe","nmps","nlps","switchFlag","bp","dataEnd","chigh","clow","byteIn","ct","cx_index","cx_mps","qeTableIcx","qeIcx","jpegOptions","decodeTransform","colorTransform","decodeArr","forceRGB","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","JpegImage","drawWidth","drawHeight","isSourcePDF","JpegError","DNLMarkerError","scanLines","EOIMarkerError","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","getBlockBufferOffset","col","blocksPerLine","decodeScan","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","parseDNLMarker","mcusPerLine","progressive","startOffset","bitsData","bitsCount","nextByte","maybeScanLines","blockRow","precision","decodeHuffman","receive","receiveAndExtend","decodeBaseline","blockOffset","huffmanTableDC","diff","blockData","pred","rs","huffmanTableAC","z","decodeDCFirst","decodeDCSuccessive","eobrun","decodeACFirst","successiveACState","successiveACNextValue","decodeACSuccessive","offsetZ","decodeMcu","mcu","mcuRow","mcuCol","blockCol","decodeBlock","componentsLength","decodeFn","fileMarker","mcuExpected","blocksPerColumn","mcusPerColumn","mcuToRead","findNextFileMarker","invalid","marker","quantizeAndInverse","blockBufferOffset","qt","quantizationTable","v0","v3","v4","v5","v6","v7","p0","p5","p6","p7","buildComponentData","computationBuffer","Int16Array","currentPos","maxPos","newPos","currentMarker","newMarker","_decodeTransform","_colorTransform","dnlScanLines","readDataBlock","prepareComponents","samplesPerLine","maxH","maxV","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","markerLoop","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","extended","sofScanLines","componentIds","componentsCount","componentId","qId","quantizationId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","nextFileMarker","output","scaleX","scaleY","numComponents","_getLinearizedBlockData","componentScaleX","componentScaleY","blocksPerScanline","xScaleBlockOffset","mask3LSB","lastComponentScaleX","_isColorConversionNeeded","_convertYccToRgb","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","rgbData","grayColor","jpxImage","JpxImage","tileCount","tiles","tileComponents","tileWidth","tileHeight","tileLeft","left","tileTop","top","srcPosition","dataPosition","imgRowSize","tileRowSize","rowBytes","JpxError","SubbandsGainLog2","LL","LH","HL","HH","failOnCorruptedImage","head","parseCodestream","headerSize","lbox","tbox","jumpDataLength","method","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","context","doNotRecover","sqcd","spqcds","spqcdSize","scalarExpounded","tile","mainHeader","siz","XTsiz","YTsiz","XTOsiz","YTOsiz","isSigned","XRsiz","YRsiz","calculateComponentDimensions","SIZ","calculateTileGrids","QCC","COC","qcd","noQuantization","guardBits","spqcd","epsilon","mu","SPqcds","QCD","currentTile","qcc","cqcc","cod","scod","entropyCoderWithCustomPrecincts","sopMarkerUsed","ephMarkerUsed","progressionOrder","layersCount","multipleComponentTransform","decompositionLevelsCount","xcb","ycb","blockStyle","selectiveArithmeticCodingBypass","resetContextProbabilities","terminationOnEachCodingPass","verticallyStripe","predictableTermination","segmentationSymbolUsed","reversibleTransformation","precinctsSizes","precinctsSize","PPx","PPy","unsupported","COD","partIndex","partsCount","initializeTile","buildPackets","parseTilePackets","transformComponents","numXtiles","numYtiles","tx0","ty0","tx1","ty1","tileComponent","tcx0","tcy0","tcx1","tcy1","getBlocksDimensions","codOrCoc","codingStyleParameters","xcb_","ycb_","buildPrecincts","resolution","dimensions","precinctWidth","precinctHeight","isZeroRes","resLevel","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","trx1","trx0","numprecinctshigh","try1","try0","numprecincts","precinctParameters","buildCodeblocks","subband","codeblockWidth","codeblockHeight","cbx0","tbx0","cby0","tby0","cbx1","tbx1","cby1","tby1","codeblocks","precincts","codeblock","precinctNumber","cbx","cby","tbx0_","tby0_","tbx1_","tby1_","pi","pj","subbandType","Lblock","precinct","cbxMin","cbxMax","cbyMin","cbyMax","codeblockParameters","numcodeblockwide","numcodeblockhigh","createPacket","layerNumber","precinctCodeblocks","subbands","LayerResolutionComponentPositionIterator","tileIndex","codingStyleDefaultParameters","maxDecompositionLevelsCount","nextPacket","JpxImage_nextPacket","resolutions","packet","ResolutionLayerComponentPositionIterator","ResolutionPositionComponentLayerIterator","maxNumPrecinctsInLevel","maxNumPrecincts","PositionComponentResolutionLayerIterator","getPrecinctSizesInImageScale","precinctsIterationSizes","px","maxNumHigh","maxNumWide","sizeInImageScale","getPrecinctIndexIfExist","ComponentPositionResolutionLayerIterator","pxIndex","pyIndex","precinctIterationSizes","minWidth","minHeight","startPrecinctRowIndex","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","bscale","resolutionSubbands","packetsIterator","skipNextBit","skipMarkerIfEqual","skipBytes","alignToByte","readCodingpasses","queue","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","valueReady","zeroBitPlanesTree","included","inclusionTree","InclusionTree","TagTree","nextLevel","incrementValue","zeroBitPlanes","codingpasses","codingpassesLog2","codedDataLength","packetItem","copyCoefficients","coefficients","levelWidth","levelHeight","delta","mb","reversible","right","bottom","blockWidth","blockHeight","bitModel","BitModel","currentCodingpassType","dataItem","encodedData","setDecoder","runSignificancePropagationPass","runMagnitudeRefinementPass","runCleanupPass","checkSegmentationSymbol","coefficentsSign","magnitude","coefficentsMagnitude","bitsDecoded","magnitudeCorrection","nb","interleave","levelOffset","transformTile","quantizationParameters","ReversibleTransform","IrreversibleTransform","subbandCoefficients","gainLog2","calculate","resultImages","transformedTiles","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","qcdOrQcc","levelsLength","levels","currentLevel","stopValue","propagateValues","levelIndex","currentValue","BitModelClosure","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","contextLabelTable","coefficientCount","neighborsSignificance","processingFlags","setNeighborsSignificance","column","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","contribution","sign0","sign1","significance1","decoded","horizontalContribution","width4","index0","indexNext","significance","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","Transform","u0","ll","iterate","j1","j2","hl_lh_hh","llWidth","llHeight","llItems","u","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","current","alpha","beta","K_","bitsCached","maxLzwDictionarySize","lzwState","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","lastCode","blockSize","decodedSizeDelta","estimatedDecodedSize","prevCode","decodedLength","currentBufferLength","hasPrev","predictor","readBlockTiff","readBlockPng","pixBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","prevRow","up","upLeft","pa","pb","pc","repeatHeader","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","EXPORT_DATA_PROPERTIES","EXPORT_DATA_EXTRA_PROPERTIES","adjustWidths","adjustTrueTypeToUnicode","nameRecords","isWinNameRecord","amend","adjustType1ToUnicode","builtInEncoding","amendFallbackToUnicode","Glyph","originalCharCode","operatorListId","isSpace","isInFont","getCharUnicodeCategory","reverseIfRtl","_NormalizedUnicodes","getNormalizedUnicodes","int16","writeSignedInt16","signedInt16","int32","string16","safeString16","isTrueTypeFile","isTrueTypeCollectionFile","isOpenTypeFile","isType1File","isCFFFile","getFontFileType","fileType","fileSubtype","applyStandardFontGlyphMap","glyphMap","buildToFontChar","toFontChar","isMacNameRecord","language","convertCidString","shouldThrow","adjustMapping","charCodeToGlyphId","hasGlyph","newGlyphZeroId","newMap","toUnicodeExtraMap","usedGlyphIds","privateUseAreaIndex","privateUseOffetStart","nextAvailableFontCharCode","privateUseOffetEnd","glyphId","fontCharCode","getRanges","numGlyphs","fontGetRangesSort","codeIndices","createCmapTable","numTables","bmpLength","trailingRangesCount","segCount","searchParams","OpenTypeFileBuilder","getSearchParams","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","rangeShift","format31012","header31012","validateOS2Table","os2","selection","usWinAscent","createOS2Table","charstrings","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","getUnicodeRangeFor","ascentScaled","typoAscent","typoDescent","winAscent","winDescent","createPostTable","createPostscriptName","createNameTable","proto","strings","stringsUnicode","strBufUnicode","names","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","psName","mimetype","missingFile","_charsCache","_glyphCache","baseName","serifFonts","namePart","matches","isInvalidPDFjsFont","fallbackToSystemFont","cff","CFFFont","Type1Font","convert","checkAndRepair","isOpenType","seacMap","FontRendererFactory","SEAC_ANALYSIS_ENABLED","extraProperties","exportDataProperties","normalizeFontName","nonStdFontMap","getNonStdFontMap","isMappedToStandardFont","fontBasicMetricsMap","getFontBasicMetrics","bold","italic","isNarrow","remeasure","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","unicodeCharCode","getDingbatsGlyphsUnicode","VALID_TABLES","readTables","tables","hhea","hmtx","maxp","post","readTableEntry","checksum","previousPosition","readOpenTypeHeader","ttf","searchRange","entrySelector","readTrueTypeCollectionHeader","ttc","ttcTag","majorVersion","minorVersion","numFonts","offsetTable","dsigTag","dsigLength","dsigOffset","readTrueTypeCollectionData","fontNameParts","fallbackData","potentialHeader","potentialTables","readNameTable","nameEntry","part","readCmapTable","platformId","encodingId","mappings","hasShortCmap","potentialTable","canBreak","useTable","correctlySorted","nextBytes","nextPlatformId","format","subHeaderKeys","maxSubHeaderKey","subHeaderKey","subHeaders","entryCount","idDelta","idRangePos","segIndex","offsetsCount","offsetIndex","rangeOffset","offsets","nGroups","startCharCode","endCharCode","glyphCode","sanitizeMetrics","headTable","dupFirstEntry","caretOffset","numOfMetrics","macStyle","numOfSidebearings","numMissing","sanitizeGlyph","sourceStart","sourceEnd","destStart","hintsValid","glyphProfile","sizeOfInstructions","glyf","contoursCount","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","xLength","yLength","xyLength","repeat","glyphDataLength","sanitizeHead","locaLength","indexToLocFormat","numGlyphsPlusOne","sanitizeGlyphLocations","loca","isGlyphLocationsLong","maxSizeOfInstructions","itemSize","itemDecode","itemEncode","fontItemDecodeLong","fontItemEncodeLong","fontItemDecode","fontItemEncode","numGlyphsOut","locaDataSize","locaData","oldGlyfData","oldGlyfDataLength","newGlyfData","locaEntries","nextOffset","missingGlyphs","writeOffset","simpleGlyph","firstEntryLength","readPostScriptTable","propertiesObj","maxpNumGlyphs","glyphNames","valid","MacStandardGlyphOrdering","glyphNameIndexes","customNames","stringLength","records","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","NAME_RECORD_LENGTH","record","nameIndex","TTOpsStackDeltas","sanitizeTTProgram","ttContext","funcId","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","inFDEF","ifLevel","inELSE","op","functionsUsed","functionsStackDeltas","newStackLength","functionsDefined","stackTop","stackDelta","foldTTTable","checkInvalidFunctions","maxFunctionDefs","sanitizeTTPrograms","fpgm","prep","cvt","cvtData","ttcData","cffFile","isTrueType","isComposite","GlyfTable","glyfTable","locaTable","isLocationLong","write","advanceWidth","lsb","maxZones","glyphsInfo","metricsOverride","lineGap","isCidToGidMapEmpty","cmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","forcePostTable","standardGlyphName","recoverGlyphName","unicodeOrCharCode","mapping","glyphZeroId","newMapping","CFFParser","duplicateFirstGlyph","compiler","CFFCompiler","compile","namePrototype","builder","tableTag","addTable","toArray","getGlyphMapping","newCharCodeToGlyphId","hasGlyphId","getCharCodes","charCodes","createCharCode","seacs","charset","getCharset","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","baseFontCharCode","accentFontCharCode","fontFieldsHmtx","cffWidths","charstring","spaceWidth","possibleSpaceReplacements","_charToGlyph","widthCode","mapSpecialUnicodeValues","buffers","currentBuf","hasCurrentBufErrors","getCharCode","charCodeLength","MAX_SUBR_NESTING","CFFStandardStrings","NUM_STANDARD_CFF_STRINGS","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","seacAnalysisEnabled","CFF","parseHeader","parseIndex","endPos","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","parseDict","topDict","createDict","CFFTopDict","parseNameIndex","parseStringIndex","parsePrivateDict","isCIDFont","hasName","charStringOffset","charStringIndex","fdArrayIndex","dictRaw","fontDict","fdArray","parseCharsets","fdSelect","parseFDSelect","parseEncoding","charStringsAndSeacs","parseCharStrings","charStrings","localSubrIndex","privateDict","subrsIndex","bytesLength","hdrSize","offSize","CFFHeader","parseOperand","parseFloatOperand","operands","cffIndex","CFFIndex","offsetSize","offsetStart","offsetEnd","CFFStrings","Type","cffDict","setByKey","parseCharString","callDepth","stackSize","validationCommand","subrNumber","copyWithin","hasVStems","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","getFDIndex","nominalWidth","emptyPrivateDictionary","parentDict","CFFPrivateDict","privateOffset","removeByName","privateDictEnd","dictData","setByName","subrsOffset","relativeOffset","CFFCharset","CFFCharsetPredefinedTypes","ISO_ADOBE","ISOAdobeCharset","EXPERT","ExpertCharset","EXPERT_SUBSET","ExpertSubsetCharset","predefined","readSupplement","supplementsCount","sid","ExpertEncoding","dataStart","glyphsCount","rangesCount","gid","CFFEncoding","CFFFDSelect","glyphZero","getSID","CFFDict","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","createTables","layout","CFFTopDictLayout","CFFPrivateDictLayout","glyphIndex","CFFOffsetTracker","isTracking","track","location","setEntryLocation","dataOffset","offset1","offset2","offset3","offset4","compileHeader","compileNameIndex","xuid","compiled","compileTopDicts","topDictTracker","trackers","compileStringIndex","compileIndex","compileEncoding","compileCharset","compileCharStrings","compileFDSelect","fontDictTrackers","compilePrivateDicts","encodeNumber","encodeInteger","encodeFloat","EncodeFloatRegExp","nibbles","sanitizedName","dicts","removeCidKeys","fontDictTracker","fontDictData","compileDict","privateDictTracker","privateDictData","outputLength","subrs","offsetTracker","string","compileGlobalSubrIndex","writeByteArray","charStringsIndex","numGlyphsLessNotDef","charsetIndex","numCharsets","warned","compileTypedArray","lastFD","currentFD","numRanges","lastOffset","MacExpertEncoding","encodingName","Script","Italic","AllCap","SmallCap","ForceBold","type1FontGlyphMapping","getSpecialPUASymbols","nameLen","hexStr","UnicodeRanges","isRTLRangeFor","charsLength","SpecialCharRegExp","CategoryCache","cachedCategory","groups","clearUnicodeCaches","Helvetica","Courier","ZapfDingbats","ArialNarrow","ArialBlack","Arial","ArialMT","ArialUnicodeMS","CourierNew","CourierNewPSMT","TimesNewRoman","TimesNewRomanPS","TimesNewRomanPSMT","Calibri","CenturyGothic","ComicSansMS","LucidaConsole","NuptialScript","SegoeUISymbol","Wingdings","Albertus","Aldus","Alexandria","Algerian","Antiqua","Apex","Arno","Aster","Aurora","Baskerville","Bell","Bembo","Benguiat","Bodoni","Bookman","Calisto","Calvert","Capitals","Cambria","Cartier","Caslon","Catull","Centaur","Chaparral","Cheltenham","Clarendon","Clearface","Cochin","Colonna","Constantia","Corona","Ecotype","Egyptienne","Elephant","Excelsior","Fairfield","Folkard","Footlight","FreeSerif","Garamond","Gentium","Georgia","Gloucester","Granjon","Heather","Hercules","Hiroshige","Imprint","Janson","Joanna","Korinna","Lexicon","LiberationSerif","Literaturnaya","Lucida","Melior","Memphis","Miller","Minion","Modern","Palatino","Perpetua","Plantin","Playbill","Renault","Requiem","Rockwell","Roman","Sabon","Scala","Seagull","Sistina","Souvenir","STIX","Sylfaen","Times","Trajan","Utopia","Versailles","Wanted","Weiss","Windsor","XITS","Dingbats","_createBuiltInEncoding","charsets","invCidToGidMap","getUint32","getInt16","getInt8","getFloat214","getSubroutineBias","numSubrs","parseCmap","idOffset","parseCff","gsubrs","isCFFCIDFont","parseGlyfTable","lookupCmap","compileGlyf","cmds","quadraticCurveTo","xa","ya","numberOfContours","arg1","arg2","scale01","scale10","subglyph","endPtsOfContours","instructionLength","numberOfPoints","startPoint","contour","compileCharString","charStringCode","bezierCurveTo","stems","stackClean","xb","yb","subrCode","subrsBias","achar","bchar","glyphNameMap","gsubrsBias","NOOP","CompiledFont","compiledGlyphs","compiledCharCodeToGlyphId","compileGlyph","compileGlyphImpl","TrueTypeCompiled","Type2Compiled","cffInfo","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","H","P","R","T","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","o","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","Idieresis","eacute","abreve","uhungarumlaut","ecaron","Ydieresis","divide","Yacute","Acircumflex","aacute","Ucircumflex","yacute","scommaaccent","ecircumflex","Uring","Udieresis","aogonek","Uacute","uogonek","Edieresis","Dcroat","commaaccent","copyright","Emacron","ccaron","aring","Ncommaaccent","lacute","agrave","Tcommaaccent","Cacute","atilde","Edotaccent","scaron","scedilla","iacute","lozenge","Rcaron","Gcommaaccent","ucircumflex","acircumflex","Amacron","rcaron","ccedilla","Zdotaccent","Thorn","Omacron","Racute","Sacute","dcaron","Umacron","uring","threesuperior","Ograve","Agrave","Abreve","multiply","uacute","Tcaron","partialdiff","ydieresis","Nacute","icircumflex","Ecircumflex","adieresis","edieresis","cacute","nacute","umacron","Ncaron","Iacute","plusminus","brokenbar","registered","Gbreve","Idotaccent","summation","Egrave","racute","omacron","Zacute","Zcaron","greaterequal","Eth","Ccedilla","lcommaaccent","tcaron","eogonek","Uogonek","Aacute","Adieresis","egrave","zacute","iogonek","Oacute","oacute","amacron","sacute","idieresis","Ocircumflex","Ugrave","Delta","thorn","twosuperior","Odieresis","igrave","ohungarumlaut","Eogonek","dcroat","threequarters","Scedilla","lcaron","Kcommaaccent","Lacute","trademark","edotaccent","Igrave","Imacron","Lcaron","onehalf","lessequal","ocircumflex","ntilde","Uhungarumlaut","Eacute","emacron","gbreve","onequarter","Scaron","Scommaaccent","Ohungarumlaut","degree","ograve","Ccaron","ugrave","radical","Dcaron","rcommaaccent","Ntilde","otilde","Rcommaaccent","Lcommaaccent","Atilde","Aogonek","Aring","Otilde","zdotaccent","Ecaron","Iogonek","kcommaaccent","minus","Icircumflex","ncaron","tcommaaccent","logicalnot","odieresis","udieresis","notequal","gcommaaccent","eth","zcaron","ncommaaccent","onesuperior","imacron","Euro","universal","existential","suchthat","asteriskmath","congruent","Alpha","Beta","Chi","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","therefore","perpendicular","radicalex","chi","phi","eta","iota","phi1","kappa","lambda","omicron","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","similar","Upsilon1","minute","infinity","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","proportional","equivalence","approxequal","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","notelement","gradient","registerserif","copyrightserif","trademarkserif","product","dotmath","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","angleleft","registersans","copyrightsans","trademarksans","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt","apple","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191","ON_CURVE_POINT","X_SHORT_VECTOR","Y_SHORT_VECTOR","REPEAT_FLAG","X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR","Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR","OVERLAP_SIMPLE","ARG_1_AND_2_ARE_WORDS","ARGS_ARE_XY_VALUES","WE_HAVE_A_SCALE","MORE_COMPONENTS","WE_HAVE_AN_X_AND_Y_SCALE","WE_HAVE_A_TWO_BY_TWO","WE_HAVE_INSTRUCTIONS","DataView","byteOffset","getSize","totalSize","ArrayBuffer","setUint32","setUint16","locaIndex","simple","composites","GlyphHeader","CompositeGlyph","SimpleGlyph","spos","factor","xMiddle","setInt16","Contour","xCoordinates","yCoordinates","contours","instructions","endPt","numberOfPt","getUint8","allXCoordinates","pointFlags","endPtsOfContoursIndex","lastCoordinate","lastX","lastY","setUint8","argument1","argument2","writeInt16","writeInt32","writeData","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","sfnt","entriesCount","entrySize","maxPower2","tablesNames","tableName","tableOffsets","paddedLength","quad","findBlock","streamBytes","startIndex","streamBytesLength","getHeaderBlock","suggestedLength","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","getEexecBlock","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","headerBlockParser","Type1Parser","extractFontHeader","eexecBlock","eexecBlockParser","extractFontProgram","type2Charstrings","getType2Charstrings","getType2Subrs","wrap","getSeacs","charstringsLen","type1Charstrings","type1Charstring","type1Subrs","type2Subrs","charsetArray","privateData","subrIndex","HINTING_ENABLED","COMMAND_MAP","hstem","vstem","vmoveto","rlineto","hlineto","vlineto","rrcurveto","callsubr","flex","drop","endchar","rmoveto","hmoveto","vhcurveto","hvcurveto","Type1CharString","flexing","wx","sbx","executeCommand","asb","sby","num2","num1","flexArgs","howManyArgs","command","keepStack","stackLength","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","isHexDigit","decrypt","discardNumber","c1","c2","decrypted","decryptAscii","digit1","digit2","isSpecial","encrypted","isBinary","readNumberArray","getToken","readInt","readBoolean","prevChar","readCharStrings","lenIV","program","blueArray","charString","charStringObject","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","RadialAxialShading","MeshShading","DummyShading","BaseShading","SMALL_NUMBER","coordsArr","shadingType","t0","domainArr","extendStart","extendEnd","extendArr","r1","r2","distance","fnObj","createFromArray","NUMBER_OF_SAMPLES","colorStops","ratio","cssColor","background","MeshStreamReader","tmpCompsBuf","csNumComps","tmpCsCompsBuf","colorFn","hasData","align","readFlag","bitsPerFlag","readCoordinate","bitsPerCoordinate","yi","readComponents","ci","getB","getBClosure","buildB","lut","t_","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","coords","figures","decodeContext","patchMesh","_decodeType4Shading","verticesPerRow","_decodeType5Shading","_decodeType6Shading","_decodeType7Shading","_updateBounds","_buildFigureFromPatch","_packData","operators","ps","verticesLeft","coord","tmp1","tmp2","tmp3","tmp4","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","coordsPacked","xy","colorsPacked","xstep","ystep","paintType","tilingType","getXFAFontMap","MyriadProRegularFactors","baseWidths","LiberationSansRegularWidths","baseMapping","LiberationSansRegularMapping","MyriadProRegularMetrics","MyriadProBoldFactors","LiberationSansBoldWidths","LiberationSansBoldMapping","MyriadProBoldMetrics","MyriadProItalicFactors","LiberationSansItalicWidths","LiberationSansItalicMapping","MyriadProItalicMetrics","MyriadProBoldItalicFactors","LiberationSansBoldItalicWidths","LiberationSansBoldItalicMapping","MyriadProBoldItalicMetrics","CalibriRegularFactors","CalibriRegularMetrics","CalibriBoldFactors","CalibriBoldMetrics","CalibriItalicFactors","CalibriItalicMetrics","CalibriBoldItalicFactors","CalibriBoldItalicMetrics","SegoeuiRegularFactors","SegoeuiRegularMetrics","SegoeuiBoldFactors","SegoeuiBoldMetrics","SegoeuiItalicFactors","SegoeuiItalicMetrics","SegoeuiBoldItalicFactors","SegoeuiBoldItalicMetrics","HelveticaRegularFactors","HelveticaRegularMetrics","HelveticaBoldFactors","HelveticaBoldMetrics","HelveticaItalicFactors","HelveticaItalicMetrics","HelveticaBoldItalicFactors","HelveticaBoldItalicMetrics","fontMap","getXfaFontWidths","rescaledBaseWidths","currentArray","newWidths","charUnicode","unicode1","unicode2","systemInfo","cachedFunction","parsedFunction","PDFFunction","parseArray","fnRef","localFunction","_localFunctionCache","LocalFunctionCache","toNumberArray","getSampleArray","outputSize","bps","sampleMul","strBytes","strIdx","constructSampled","constructInterpolated","constructStiched","constructPostScript","toMultiArray","xmin","xmax","ymin","ymax","domain","inputSize","encode","samples","constructSampledFn","cubeVertices","cubeN","Float64Array","cubeVertex","domain_2i","domain_2i_1","size_i","e0","n0","n1","rj","constructInterpolatedFn","fns","constructStichedFn","constructStichedFromIRClip","dmin","dmax","rmin","rmax","PostScriptLexer","PostScriptParser","PostScriptCompiler","numOutputs","numInputs","PostScriptEvaluator","MAX_CACHE_SIZE","cache_available","constructPostScriptFn","cachedValue","execute","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","initialStack","copy","roll","counter","atan","cos","LN10","sin","AstNode","visit","AstArgument","visitArgument","AstLiteral","visitLiteral","AstBinaryOperation","visitBinaryOperation","AstMin","arg","visitMin","AstVariable","visitVariable","AstVariableDefinition","variable","visitVariableDefinition","ExpressionBuilderVisitor","parts","literal","definition","buildAddOperation","buildMulOperation","buildSubOperation","buildMinOperation","lastRegister","ast1","ast2","tmpVar","instruction","statementBuilder","expr","nextToken","accept","expect","PostScriptTokenTypes","LBRACE","parseBlock","RBRACE","NUMBER","OPERATOR","parseCondition","conditionLocation","IF","jumpLocation","endOfTrue","IFELSE","PostScriptToken","opCache","getOperator","opValue","BaseLocalCache","_onlyRefs","onlyRefs","_nameRefMap","_imageMap","_imageCache","GlobalImageCache","NUM_PAGES_THRESHOLD","MIN_IMAGES_TO_CACHE","MAX_BYTE_SIZE","_refCache","_byteSize","imageData","_cacheLimitReached","pageIndexSet","onlyData","baseTypes","arabicTypes","isOdd","isEven","findUnequal","setValues","reverseValues","createBidiText","isLTR","startLevel","strLength","numBidi","charType","sor","eor","lastType","before","after","highestLevel","lowestOddLevel","SEED","MASK_HIGH","MASK_LOW","seed","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","addState","parentState","checkFn","iterateFn","processFn","InitialState","iterateInlineImageGroup","iFirstSave","iCurr","foundInlineImageGroup","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","kind","iterateImageMaskGroup","foundImageMaskGroup","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","iFirstPIMXO","isSameImage","iTransform","transformArgs","firstPIMXOArg0","firstTransformArg0","firstTransformArg1","firstTransformArg2","firstTransformArg3","iPIMXO","images","maskParams","iterateImageGroup","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iterateShowTextGroup","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","NullOptimizer","_optimize","QueueOptimizer","lastProcessed","CHUNK_SIZE","CHUNK_SIZE_ABOUT","streamSink","_streamSink","optimizer","_totalLength","_resolved","_transfers","separateAnnots","decodeAndClamp","addend","coefficient","resizeImageMask","isMask","matte","needsDecode","decodeCoefficients","decodeAddends","isIndexed","maskDict","smaskData","maskData","computedLength","haveFullData","applyMaskImageData","putImageData","transferToImageBitmap","decodeBuffer","getComponents","bufferPos","rowComps","loop1End","loop2End","remainingBits","fillOpacity","rgbaBuf","alphaBuf","sw","fillGrayBuffer","imageOffset","maskOffset","undoPreblend","matteRgb","matteR","matteG","matteB","forceRGBA","getImageBytes","imageLength","internal","maybeUndoPreblend","imageBytes","srcPos","opaque","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","elem","writeStream","writeValue","writeArray","writeInt","writeString","computeMD5","filesize","time","md5Buffer","md5BufferLen","writeXFADataForAcroform","xml","SimpleXMLParser","hasAttributes","parseFromString","documentElement","searchNode","childNodes","SimpleDOMNode","dump","updateAcroform","newXfa","updateXFA","refForXrefTable","baseOffset","xrefTableData","indexes","maxOffset","md5","sizes","structSize","tableLength","bufferLen","footer","objOffset","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespaceString","XMLParserBase","_resolveEntities","onResolveEntity","_parseContent","attributes","skipWs","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","onEndElement","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","isClosed","onBeginElement","onText","nodeName","nodeValue","firstChild","nextSibling","parentNode","child","hasChildNodes","siblingPos","attribute","lowerCaseName","_currentFragment","_stack","_errorCode","_hasAttributes","_lowerCaseName","lastElement","childNode","ARCFourCipher","keyLength","encryptBlock","decryptBlock","calculateMD5Closure","h0","h3","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","not","lowAdd","highAdd","copyTo","calculateSHA256","calculateSHA256Closure","rotr","maj","sigmaPrime","littleSigma","littleSigmaPrime","h4","h5","h6","h7","calculateSHA512","calculateSHA512Closure","mode384","calculateSHA384","NullCipher","AESBaseCipher","_s","_inv_s","_mix","_mixCol","bufferPosition","_expandKey","cipherKey","_decrypt","_keySize","_cyclesOfRepetition","s0","s1","s3","_encrypt","_decryptBlock2","finalize","sourceLength","iv","plain","_key","lastBlock","psLen","cipher","AES128Cipher","_rcon","rcon","t3","t4","AES256Cipher","PDF17","checkOwnerPassword","ownerValidationSalt","userBytes","ownerPassword","hashData","checkUserPassword","userValidationSalt","userPassword","getOwnerKey","ownerKeySalt","ownerEncryption","getUserKey","userKeySalt","userEncryption","PDF20","PDF20Closure","calculatePDF20Hash","combinedLength","combinedArray","remainder","concatBytes","CipherTransform","stringCipherConstructor","streamCipherConstructor","StringCipherConstructor","StreamCipherConstructor","DecryptStream","cipherTransformDecryptStream","strLen","pad","crypto","getRandomValues","random","CipherTransformFactory","CipherTransformFactoryClosure","defaultPasswordBytes","createEncryptionKey20","revision","uBytes","perms","passwordLength","pdfAlgorithm","prepareKeyData","fileId","encryptMetadata","hashDataSize","keyLengthInBytes","encryptionKey","checkData","derivedKey","decodeUserPassword","identityName","buildObjectKey","isAes","buildCipherConstructor","cf","cryptFilter","cfm","cipherTransformFactoryBuildCipherConstructorNone","cipherTransformFactoryBuildCipherConstructorV2","cipherTransformFactoryBuildCipherConstructorAESV2","cipherTransformFactoryBuildCipherConstructorAESV3","algorithm","cfDict","streamCryptoName","handlerDict","fileIdBytes","passwordBytes","decodedPassword","stmf","strf","eff","cipherConstructor","buildCipherCipherConstructor","nextChunk","hasMoreData","fetchDestination","_catDict","getCatalogObj","toplevelPagesDict","_actualNumPages","metadata","streamRef","MetadataParser","markInfo","_readMarkInfo","Marked","UserProperties","Suspects","_readStructTreeRoot","root","StructTreeRoot","init","pagesObj","documentOutline","_readDocumentOutline","blackColor","outlineDict","outlineItem","attachment","unsafeUrl","setOCGState","permissions","_readPermissions","optionalContentConfig","defaultConfig","groupsData","groupRefs","groupRef","_readOptionalContentConfig","contentGroupRefs","parseOnOff","onParsed","parseOrder","nestedLevels","parsedOrderRefs","nestedOrder","parseNestedOrder","hiddenGroups","MAX_NESTED_LEVELS","nestedName","creator","baseState","off","_pagesCount","destinations","_readDests","dests","NameTree","getAll","getDestination","allDest","pageLabels","_readPageLabels","prefix","numberTree","NumberTree","nums","currentLabel","labelDict","st","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","pageLayout","pageMode","viewerPreferences","prefs","prefValue","openAction","nameTree","fs","_collectJavaScript","appendIfJavaScriptDict","jsDict","translatedFonts","nodesToVisit","visitedNodes","pagesRef","currentPageIndex","currentNode","posInKids","addPageDict","addPageError","queueItem","kidObj","getPageIndex","cachedPageIndex","pagesBeforeRef","kidRef","parentRef","kidPromises","uri","actionType","actionName","include","resetForm","urlDict","remoteDest","JSON","stringify","target","relationship","namedAction","preserveRB","stateArr","jsAction","jsURL","NameOrNumberTree","_type","kidsOrEntries","loopCount","MAX_LEVELS","limits","currentKey","pickPlatformItem","description","contentAvailable","_filename","contentRef","fileObj","_repair","xmlDocument","_metadataMap","_data","d2","d3","charBuf","_getSequence","_parseArray","seqNode","rdf","desc","parsedData","rawData","MAX_DEPTH","StructElementType","PAGE_CONTENT","STREAM_CONTENT","OBJECT","ELEMENT","rootDict","roleMap","readRoleMap","roleMapDict","StructElementNode","parseKids","role","nameObj","pageObjId","objRef","parseKid","StructElement","kidDict","refObjId","parentTree","parentArray","addNode","addTopLevelNode","nodeToSerializable","kidElement","mayHaveChildren","addChildren","rawValue","refSet","_walk","nodesToRevisit","pendingRequests","foundMissingData","XFAParser","_createDocument","binder","Binder","dataHandler","DataHandler","$globalData","_createPagesHelper","$toPages","nextIteration","setTimeout","_createPages","pages","dims","fontFinder","FontFinder","typeface","usedTypefaces","stripQuotes","storage","serialize","rc","XhtmlNamespace","$nodeName","newRoot","body","$appendChild","$toHTML","success","html","class","attr","$text","$acceptWhitespace","$addHTML","$childrenToHTML","$clean","$cleanPage","$cleanup","$clone","$consumed","$content","$data","$dump","$extra","$finalize","$flushHTML","$getAttributeIt","$getAttributes","$getAvailableSpace","$getChildrenByClass","$getChildrenByName","$getChildrenByNameIt","$getDataValue","$getExtra","$getRealChildrenByNameIt","$getChildren","$getContainedChildren","$getNextPage","$getSubformParent","$getParent","$getTemplateRoot","$hasSettableValue","$ids","$indexOf","$insertAt","$isCDATAXml","$isBindable","$isDataValue","$isDescendent","$isNsAgnostic","$isSplittable","$isThereMoreWidth","$isTransparent","$isUsable","$lastAttribute","$namespaceId","$nsAttributes","$onChild","$onChildCheck","$onText","$pushGlyphs","$popPara","$pushPara","$removeChild","$root","$resolvePrototypes","$searchNode","$setId","$setSetAttributes","$setValue","$tabIndex","$toString","$toStyle","$uid","_applyPrototype","_attributes","_attributeNames","_children","_cloneAttribute","_dataValue","_defaultValue","_filteredChildrenGenerator","_getPrototype","_getUnsetAttributes","_hasChildren","_max","_options","_parent","_resolvePrototypesHelper","_setAttributes","_validator","uid","NS_DATASETS","NamespaceIds","XFAObject","nsId","hasChildren","XFAObjectArray","para","paraStack","clean","getPrototypeOf","getOwnPropertyNames","dumped","HTMLResult","EMPTY","availableSpace","failingNode","generator","protoAttributes","allAttr","setAttr","ancestors","use","usehref","somExpression","endsWith","protoProto","newAncestors","unsetAttrName","protoValue","$symbol","getOwnPropertySymbols","clonedChild","allTransparent","XFAAttribute","XmlObject","dataNode","tagName","utf8TagName","utf8Name","skipConsumed","xhtml","hasNS","$ns","$name","ContentObject","OptionObject","getKeyword","StringObject","IntegerObject","validator","getInteger","Option01","Option10","dimConverters","pt","mm","in","measurementPattern","getFloat","getStringOption","getMeasurement","def","valueStr","unit","conv","getRatio","den","getRelevant","excluded","viewname","getColor","getBBox","FAILURE","breakNode","isBreak","$buildXFAObject","ns","pdf","sourceSet","xdc","xdp","xfdf","xmpmeta","namePattern","indexPattern","dot","dotDot","dotHash","dotBracket","dotParen","shortcuts","host","dataWindow","event","somCache","WeakMap","parseExpression","dotDotAllowed","noExpr","cacheName","formCalc","container","useCache","isQualified","isFinite","createNodes","createDataNode","createText","Text","emptyMerge","_isConsumeData","_mergeMode","_isMatchTemplate","_bindElement","_bindValue","formNode","picture","Field","ui","choiceList","open","_findDataByNameToConsume","isValue","global","_setProperties","connection","setProperty","targetNodes","targetNode","targetParent","SetProperty","BindItems","attrs","Reflect","construct","_bindItems","bindItems","Items","labelRef","valueRef","labelNodes","labelNode","valueNodes","valueNode","label","_bindOccurrences","baseClone","occur","_createOccurrences","initial","currentNumber","nodeClone","_getOccurInfo","_setAndBind","uselessNodes","mergeMode","dataChildren","dataChild","TEMPLATE_NS_ID","SVG_NS","MAX_ATTEMPTS_FOR_LRTB_LAYOUT","MAX_EMPTY_PAGES","DEFAULT_TAB_INDEX","HEADING_PATTERN","MIMES","IMAGES_HEADERS","getBorderDims","border","borderExtra","insets","hasMargin","margin","topInset","rightInset","bottomInset","leftInset","_setValue","templateNode","Value","getContainedChildren","SubformSet","isRequired","nullTest","setTabIndex","traversal","applyAssist","assist","assistTitle","ariaRole","ariaLevel","ariaLabel","speak","toolTip","valueToHtml","setFirstUnsplittable","firstUnsplittable","noLayoutFailure","unsetFirstUnsplittable","handleBreak","targetType","currentPageArea","currentContentArea","PageArea","startNew","ContentArea","pageArea","nextPageArea","contentAreas","contentArea","indexForCurrent","indexForTarget","handleOverflow","extraNode","saved","savedMethod","AppearanceFilter","Arc","circular","hand","startAngle","sweepAngle","edge","Edge","edgeStyle","presence","strokeWidth","measureToString","arc","xmlns","overflow","cx","cy","rx","ry","largeArc","vectorEffect","preserveAspectRatio","svg","display","Area","colSpan","relevant","extras","area","draw","exObject","exclGroup","subform","subformSet","toStyle","isPrintOnly","xfaName","Assist","Barcode","charEncoding","dataColumnCount","dataPrep","dataRowCount","endChar","errorCorrectionLevel","moduleHeight","moduleWidth","printCheckDigit","rowColumnRatio","startChar","textLocation","truncate","upsMode","wideNarrowRatio","Bind","Bookend","leader","BooleanElement","Border","break","corner","edges","defaultEdge","edgeStyles","cornerStyles","borderRadius","Break","afterTarget","beforeTarget","bookendLeader","bookendTrailer","overflowLeader","overflowTarget","overflowTrailer","BreakAfter","script","BreakBefore","Button","highlight","grandpa","htmlButton","activity","fixURL","Calculate","Caption","placement","reserve","layoutNode","savedReserve","setPara","Certificate","Certificates","credentialServerPolicy","urlPolicy","encryption","issuers","keyUsage","oids","signing","subjectDNs","CheckButton","mark","shape","className","groupId","fieldId","dataId","ExclGroup","xfaOn","xfaOff","ChoiceList","commitOn","textEntry","optionStyle","displayedIndex","saveIndex","displayed","selected","selectAttributes","multiple","Color","cSpace","Comb","numberOfCells","Connect","usage","classNames","Corner","inverted","DateElement","DateTime","DateTimeEdit","hScrollPolicy","picker","Decimal","fracDigits","leadDigits","DefaultUi","Desc","boolean","dateTime","decimal","exData","float","integer","DigestMethod","DigestMethods","digestMethod","Draw","anchorType","hAlign","locale","maxW","minH","minW","caption","keep","fixDimensions","savedW","savedH","isBroken","checkDimensions","setMinMaxDimensions","padding","computeBbox","createWrapper","cap","linecap","Encoding","Encodings","Encrypt","certificate","EncryptData","manifest","Encryption","EncryptionMethod","EncryptionMethods","encryptionMethod","Event","listen","encryptData","signData","submit","ExData","contentType","maxLength","rid","transferEncoding","ExObject","archive","classId","codeBase","codeType","access","accessKey","connect","attempt","numberInLine","_isSplittable","flushHTML","addHTML","getAvailableSpace","setAccess","prevHeight","isSplittable","columnWidths","currentColumn","layoutClass","isLrTb","maxRun","marginH","marginV","Execute","executeType","runAt","Extras","Ui","TextEdit","textEdit","checkButton","borderDims","uiW","uiH","lineNoGap","tabindex","aElement","button","imageEdit","htmlValue","maxChars","numericEdit","captionHeight","inputHeight","Fill","linear","radial","solid","stipple","ggrandpa","propName","altPropName","Rectangle","addRevocationInfo","appearanceFilter","certificates","digestMethods","encryptionMethods","lockDocument","mdp","reasons","timeStamp","Float","baselineShift","fontHorizontalScale","fontVerticalScale","kerningMode","letterSpacing","lineThrough","lineThroughPeriod","overline","overlinePeriod","posture","underline","underlinePeriod","backgroundClip","verticalAlign","fontKerning","textDecoration","textDecorationStyle","fontStyle","setFontFamily","Format","Handler","Hyphenation","excludeAllCaps","excludeInitialCap","hyphenate","pushCharacterCount","remainCharacterCount","wordCharacterCount","Image","aspect","atob","blob","Blob","objectFit","createObjectURL","ImageEdit","Integer","Issuers","Keep","intact","KeyUsage","crlSign","dataEncipherment","decipherOnly","digitalSignature","encipherOnly","keyAgreement","keyCertSign","keyEncipherment","nonRepudiation","Line","slope","Linear","startColor","endColor","LockDocument","Manifest","Margin","Mdp","signatureType","Medium","imagingBBox","long","orientation","short","stock","trayIn","trayOut","Message","NumericEdit","Occur","originalMin","PageSet","Template","Oid","Oids","oid","Overflow","addLeader","addTrailer","blankOrNotBlank","initialNumber","numbered","oddOrEven","pagePosition","medium","numberOfUse","relation","duplexImposition","pageSet","pageSetIndex","pageNumber","parity","Para","marginLeft","marginRight","orphans","preserve","radixOffset","spaceAbove","spaceBelow","tabDefault","tabStops","textIndent","vAlign","widows","hyphenation","paddingLeft","paddingight","paddingTop","paddingBottom","fixTextIndent","tabSize","hyphenatation","PasswordEdit","passwordChar","Picture","Proto","barcode","bookend","breakAfter","breakBefore","dateTimeEdit","defaultUi","passwordEdit","subjectDN","traverse","variables","Radial","Reason","Reasons","cornerStyle","RefElement","binding","SignData","Signature","Signing","Solid","Speak","disable","priority","Stipple","rate","Subform","allowMacro","restoreState","scope","afterBreakAfter","savedNoLayoutFailure","overflowExtra","overflowNode","SubjectDN","delimiter","kv","SubjectDNs","Submit","embedPDF","textEncoding","xdpContent","baseProfile","pageAreas","mainHtml","breakBeforeTarget","pageAreaParent","targetPageArea","hasSomething","hasSomethingCounter","htmlContentAreas","acc","allowRichText","vScrollPolicy","Time","TimeStamp","server","ToolTip","Traversal","Traverse","Validate","formatTest","scriptTest","valueName","Variables","TemplateNamespace","createLine","htmlFromFailing","getTransformedBBox","centerX","centerY","ERROR","converters","transformOrigin","visibility","textAlign","alignSelf","layoutText","xfaFont","measure","TextMeasure","addString","compute","newStyle","wrapper","insetsH","insetsW","indent","getCurrentPara","nodeStyle","valueStyle","flexDirection","justifyContent","paraStyle","regular","pdfFont","selectFont","defaultFont","addPdfFont","bolditalic","myriad","getDefault","mustWarn","maybe","family","real","WIDTH_FACTOR","FontInfo","paraMargin","FontSelector","defaultXfaFont","defaultParaMargin","defaultLineHeight","pushData","lastFont","popFont","topFont","fontSelector","extraHeight","addPara","fontLineHeight","noGap","firstLineHeight","fallbackWidth","encodedLine","lastSpaceWidth","currentLineWidth","currentLineHeight","isFirstLine","isEOL","dataset","rootNameSpace","_builder","Builder","_globalData","_ids","_current","buildRoot","_whiteRegex","_nbsps","_richText","_mkAttributes","namespace","prefixes","attributeObj","nsAttrs","_getNameAndPrefix","nsAgnostic","attributesObj","nsPrefix","isNsAgnostic","build","Root","Empty","_namespaceStack","_nsAgnosticLevel","_namespacePrefixes","_namespaces","_nextNsId","_currentNamespace","UnknownNamespace","hasNamespaceDef","_searchNamespace","_addNamespacePrefix","dataTemplate","NamespaceSetUp","xfaAttrs","nsToUse","_getNamespaceToUse","namespaceToUse","hasNamespace","nsName","prefixStack","ConfigNamespace","ConnectionSetNamespace","DatasetsNamespace","LocaleSetNamespace","SignatureNamespace","StylesheetNamespace","XdpNamespace","CONFIG_NS_ID","Acrobat","acrobat7","autoSave","common","validateApprovalSignatures","submitUrl","Acrobat7","dynamicRender","ADBE_JSConsole","ADBE_JSDebugger","AddSilentPrint","AddViewerPreferences","AdjustData","AdobeExtensionLevel","Agent","AlwaysEmbed","Amd","Attributes","AutoSave","Base","BatchOutput","BehaviorOverride","Cache","templateCache","Change","Common","messaging","suppressBanner","validationMessaging","versionControl","Compress","CompressLogicalStructure","CompressObjectStream","Compression","compressLogicalStructure","compressObjectStream","Config","acrobat","present","trace","agent","Conformance","ContentCopy","Copies","Creator","CurrentPage","Data","adjustData","incrementalLoad","outputXSL","startNode","xsl","excludeNS","Debug","DefaultTypeface","writingScript","Destination","DocumentAssembly","Driver","DuplexOption","DynamicRender","Embed","encryptionLevel","EncryptionLevel","Enforce","Equate","force","to","EquateRange","_unicodeRange","unicodeRange","unicodeRegex","Exclude","ExcludeNS","FlipLabel","embed","subsetBelow","alwaysEmbed","defaultTypeface","neverEmbed","FormFieldFilling","GroupParent","IfEmpty","IncludeXDPContent","IncrementalLoad","IncrementalMerge","Interactive","Jog","LabelPrinter","batchOutput","flipLabel","Layout","Level","Linearized","Locale","LocaleSet","Log","threshold","MapElement","equate","equateRange","MediumInfo","msgId","severity","Messaging","Mode","ModifyAnnots","MsgId","NameAttr","NeverEmbed","NumberOfCopies","OpenAction","destination","Output","OutputBin","OutputXSL","Overprint","Packets","PageOffset","PageRange","numbers","Pagination","PaginationOverride","Part","Pcl","jog","mediumInfo","outputBin","pageOffset","staple","Pdf","adobeExtensionLevel","compression","interactive","linearized","pdfa","producer","renderPolicy","scriptModel","silentPrint","submitFormat","tagged","Pdfa","amd","conformance","includeXDPContent","Permissions","accessibleContent","change","contentCopy","documentAssembly","formFieldFilling","modifyAnnots","plaintextMetadata","printHighQuality","PickTrayByPDFSize","PlaintextMetadata","Presence","Present","behaviorOverride","copies","incrementalMerge","overprint","pagination","paginationOverride","driver","labelPrinter","pcl","webClient","zpl","Print","PrintHighQuality","PrintScaling","PrinterName","Producer","Ps","Range","Record","Relevant","Rename","RenderPolicy","RunScripts","currentPage","exclude","runScripts","ScriptModel","Severity","SilentPrint","addSilentPrint","printerName","Staple","StartNode","StartPage","SubmitFormat","SubmitUrl","SubsetBelow","SuppressBanner","Tagged","startPage","Threshold","To","TemplateCache","maxEntries","Trace","groupParent","ifEmpty","nameAttr","rename","whitespace","Uri","ValidateApprovalSignatures","ValidationMessaging","Version","VersionControl","outputBelow","sourceAbove","sourceBelow","ViewerPreferences","addViewerPreferences","duplexOption","enforce","numberOfCopies","pageRange","pickTrayByPDFSize","printScaling","WebClient","Whitespace","Window","pair","Xdc","Xdp","packets","Xsl","debug","Zpl","compress","CONNECTION_SET_NS_ID","ConnectionSet","wsdlConnection","xmlConnection","xsdConnection","EffectiveInputPolicy","EffectiveOutputPolicy","Operation","RootElement","SoapAction","SoapAddress","WsdlAddress","WsdlConnection","dataDescription","effectiveInputPolicy","effectiveOutputPolicy","soapAction","soapAddress","wsdlAddress","XmlConnection","XsdConnection","rootElement","DATASETS_NS_ID","Datasets","LOCALE_SET_NS_ID","CalendarSymbols","dayNames","eraNames","meridiemNames","monthNames","CurrencySymbol","CurrencySymbols","currencySymbol","DatePattern","DatePatterns","datePattern","DateTimeSymbols","Day","DayNames","abbr","day","Era","EraNames","era","calendarSymbols","currencySymbols","datePatterns","dateTimeSymbols","numberPatterns","numberSymbols","timePatterns","typeFaces","Meridiem","MeridiemNames","meridiem","Month","MonthNames","month","NumberPattern","NumberPatterns","numberPattern","NumberSymbol","NumberSymbols","numberSymbol","TimePattern","TimePatterns","timePattern","TypeFace","TypeFaces","typeFace","SIGNATURE_NS_ID","STYLESHEET_NS_ID","Stylesheet","XDP_NS_ID","uuid","XHTML_NS_ID","$richText","VALID_STYLES","StyleMapping","original","spacesRegExp","crlfRegExp","crlfForRichTextRegExp","mapStyle","styleStr","newValue","replaceAll","SUB_SUPER_SCRIPT_FACTOR","VERTICAL_FACTOR","checkStyle","NoWhites","XhtmlObject","mustPop","pushFont","Body","Br","Html","Li","Ol","siblings","Span","Sub","Sup","Ul","br","li","ol","span","sub","sup","ul","namespaceId","decodeString","DatasetXMLParser","xrefstms","_cacheMap","_pendingRefs","_newPersistentRefNum","_newTemporaryRefNum","startXRefQueue","trailerDict","readXRef","indexObjects","processXRefTable","tableState","entryNum","parserBuf1","parserBuf2","readXRefTable","firstEntryNum","free","uncompressed","processXRefStream","streamParameters","byteWidths","streamState","entryRanges","readXRefStream","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","typeByte","offsetByte","generationByte","TAB","PERCENT","LT","readToken","skipUntil","skipped","gEndobjRegExp","gStartxrefRegExp","objRegExp","trailerBytes","startxrefBytes","xrefBytes","bufferStr","trailers","xrefStms","updateEntries","xrefTagOffset","xrefStm","trailerDicts","isEncrypted","trailerError","_generationFallback","validPagesDict","pagesDict","pagesCount","startXRefParsedCache","getEntry","xrefEntry","fetchUncompressed","fetchCompressed","tableOffset","versions","nw","electron","CallbackKind","UNKNOWN","DATA","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","cbSourceName","cbTargetName","_createStreamSink","addEventListener","ah","sendWithStream","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","pull","pullCapability","cancel","cancelCapability","isCancelled","lastDesiredSize","sinkCapability","onPull","onCancel","streamController","_deleteStreamController","allSettled","removeEventListener","_msgHandler","_contentLength","_fullRequestReader","_rangeRequestReaders","PDFWorkerStreamReader","PDFWorkerStreamRangeReader","_isRangeSupported","_isStreamingSupported","readableStream","_reader","getReader","_headersReady","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}
|